使用WriteProcessMemory函數(shù)向指定進(jìn)程寫入數(shù)據(jù)

成功寫入數(shù)據(jù)到進(jìn)程 AA = 170 讀取了1字節(jié)

源碼

#include

#include

int main(int argc, PCHAR argv[]){

HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 23548);

if (handle == NULL){

printf("打開進(jìn)程失敗\n");

}

printf("打開進(jìn)程成功,句柄為:%p\n", handle);

LPSTR buffer = 0;

BYTE wb[5] = { 0xaa, 0xaa, 0xaa, 0xa1,0x00 };

BYTE cd[4] = { 0 };

DWORD i = 0;

DWORD newprot, oldprot;

VirtualProtectEx(handle, (LPVOID)0x0040008, 4, PAGE_EXECUTE_READWRITE, &oldprot);

if (!ReadProcessMemory(handle, (LPVOID)0x0040008, &buffer, 4, &i)){

printf("讀取進(jìn)程內(nèi)存失敗 %d %d\n", GetLastError(), i);

}

printf("讀取到的進(jìn)程內(nèi)存信息為: %p 讀取數(shù)量 %d\n", buffer, i);

if (!WriteProcessMemory(handle, (LPVOID)0x0040008, wb, 4, &i)){

printf("寫入進(jìn)程內(nèi)存失敗 %d %d\n", GetLastError(), i);

}

printf("寫入到的進(jìn)程內(nèi)存信息為: %d 寫入數(shù)量 %d\n", wb[0], i);

VirtualProtectEx(handle, (LPVOID)0x0040008, 4, oldprot, &newprot);

CloseHandle(handle);

getchar();

return 0;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容