none
vb.net 讀&寫一些特殊程式的記憶體... RRS feed

  • 一般討論

  • 我現在已經會寫入及讀取記憶體了,可是,我想要讀取及寫入一個程式的記憶體時,剛開始可以用該程式的PID來讀取及寫入要改的數值,可是那個程式執行到下一個步驟時,程式沒有關閉,但是用我設計的程式居然說讀不到PID,這到底怎麼一回事阿?

    我想這應該是要保護程式不被入侵記憶體吧,可是我又不確定...

    如果知道原因是否可以幫幫我下一部要怎麼做才可以讀取及寫入數值到我想要寫入的程式中?

     

    程式碼:

    這裡的程式碼不說了,因為太多了,重點在下面...

    *****************************************************************************

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

            Dim pHandle As IntPtr

            pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, TextBox1.Text)'TextBox1.Text是要讀取及寫入數值的程式PID

            If (pHandle = 0) Then

                MsgBox("不正確、無法讀取或是無效的PID。", MsgBoxStyle.Critical, "ERROR")

            Else

                'TRUE

                WriteProcessMemory(pHandle, &H487711, &HDB, 2, 0&)

                WriteProcessMemory(pHandle, &H487711, &H90, 2, 0&)

                WriteProcessMemory(pHandle, &H487711, &H90, 2, 0&)

            End If

    *****************************************************************************

    備註:我建置後是沒有語法錯誤的

    2010年5月7日 下午 01:03

所有回覆

  • Hi,

    Process.Handel有試試看嗎

    http://msdn.microsoft.com/en-us/library/system.diagnostics.process.handle.aspx


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2010年5月7日 下午 04:24
  • 用工作管理員看該 pid 是否還在?
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年5月7日 下午 05:24
  • 用工作管理員看還在,可是設計出來的程式讀不到。

    但是我有另外用vb寫一個程式來讀那程式的pid,也讀的到,可是好像嘗試要寫入或讀取要改記憶體的程式它不讓我有這動作,希望有人可以幫我,謝謝。

     

    感謝您幫我提出建議!!!

    2010年5月8日 上午 01:44
  • 就是因為用工作管理員可以找到該程式的pid,但是寫出來的程式就是不能讀取。

    我用過Process.Handel,還是不行。

    ※傳回值都是0※0=沒有找到...

     

    謝謝你提供我意見!!!

    2010年5月8日 上午 02:26
  • pHandle = Process.GetProcessById(TextBox1.Text).Handle

    可以Work

     

     


    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度
    2010年5月8日 上午 08:08
  • 使用

    pHandle = Process.GetProcessById(TextBox1.Text).Handle

    之後會出現錯誤視窗"存取被拒",還是無法達到理想方法。

     

    感謝您的意見!!!

    2010年5月8日 上午 09:23
  • 試了一下應該是沒有問題

    確認一下 你的PROCESS_ALL_ACCESS是否為 &H1F0FFF

     

     

    http://cid-95e48831697696f5.skydrive.live.com/self.aspx/.Public/1.jpg


    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

     

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

     

    在標題或文章註明很急
    不會增加網友回覆速度
    2010年5月8日 下午 01:51
  • Hi,

    參閱

    OpenProcess Function

    http://msdn.microsoft.com/en-us/library/ms684320(VS.85).aspx

    您可以試著呼叫 GetLastError來取得問題的原因

    另外一提,您的程式好像未呼叫 CloseHandle 


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2010年5月9日 上午 01:31
  • 其他程式不會有此現象,但是想要用我想要改的那程式就是不行讀取或寫入記憶體。

     

    感謝您提出的意見!!!

    2010年5月11日 上午 09:46
  • 我有用CloseHandle

     

    謝謝您給的意見!!!

    2010年5月11日 上午 09:47
  • Hi,

    GetLastError有試試嗎?


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2010年5月11日 下午 01:05
  • 有些軟體特別是電動有做保護。
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年5月11日 下午 02:50
  • 如果是線上遊戲的話

    可能會防止你使用某些函數(修改函數開頭的記憶體)

    讓你無法使用(就算用Process.GetProcessById(TextBox1.Text).Handle也取不到)

    2010年5月16日 上午 12:54
  • Hi,

    個人建議是先用GetLastError看看是否有會造成取不到Handle的原因

    如果沒有錯誤

    那可能就是保護了...

    這部分個人有看過有種做法是用Hook把OpenProcess導到自己的函式

    讓別的程式無法取得Handle

    如果有做這層保護

    就不建議您在去嚐試控制

    若您執意嚐試進一步控制

    可能去向對岸詢問比較好一點


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2010年5月16日 下午 02:45
  • 引述 mark538 大大

    如果是線上遊戲的話

    可能會防止你使用某些函數(修改函數開頭的記憶體)

    讓你無法使用(就算用Process.GetProcessById(TextBox1.Text).Handle也取不到)

    我覺得應該是這樣,但是有任何方式可以寫像是Kernel.dll的嗎,這樣應該可以用了吧,我想應該是...

    但是你說得好像也是,我也會參考的,謝謝您的意見及幫助!!!

    2010年5月17日 上午 11:58
  • 可能去向對岸詢問比較好一點

    去對岸的原因之一在本版置頂公告有寫:

    張貼文章應注意事項及應提供資訊


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年5月17日 下午 03:12
  • 要怎麼辦呢,如果要對該程式做這樣的動作,請各位大大幫幫忙了。
    2010年5月23日 上午 03:10
  • 置頂公告有寫了,針對有保護行為的做破解,屬於惡意程式,不在本版討論範圍之內。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年5月23日 下午 12:24