ReadProcessMemory()

ReadProcessMemory

從特定進程的內存裏讀取數據。被讀取的整個位置應該是可讀的否則操作會失敗。


BOOL WINAPI ReadProcessMemory(

__in    HANDLE hProcess ,

__in    LPCVOID lpBaseAddress ,

__out  LPVOID lpBuffer ,

__in    SIZE_T nSize ,

__out  SIZE_T* lpNumberOfBytesRead 

);

參數:

hProcess:目標進程的句柄。這個句柄必須有 PROCESS_VM_READ 標記。

lpBaseAddress:一個指向目標進程需要讀取數據的首地址的指針。在讀取數據之前,系統將會確認需讀取的所有數據是否可讀,如果不可讀那麼函數執行失敗。

lpBuffer:指向要接收讀取到的數據的緩衝區。

nSize:讀取的數據大小,單位爲Bytes。

lpNumberOfBytesRead:指向一個變量,用於放置傳送數據的大小。如果爲NULL,該參數被忽略。

返回值:

成功:非零。

失敗:零。

得到更多錯誤信息,使用 GetLastError 函數。

如果讀到了不可讀的內存,該函數會失敗。

附註:

該函數從指定的進程讀取內存數據到當前進程的內存。任何標記爲 PROCESS_VM_READ 的句柄都能使用該函數。Typically but not always, the process with address space that is being written to is being debugged.(在很典型的情況下,可被寫內存的進程是處於調試狀態的。)

要求:

頭文件:在Winbase.h裏聲明;包括Windows.h。

庫:Kernel32.lib

動態鏈接庫:Kernel32.dll

發佈了26 篇原創文章 · 獲贊 6 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章