gpt4 book ai didi

c - 如何在 C 中更改进程的十六进制转储

转载 作者:太空宇宙 更新时间:2023-11-04 07:51:44 26 4
gpt4 key购买 nike

我写这段代码来改变选定进程的十六进制转储,这里是代码:

#include <windows.h>

int main(int argc, char *argv[])
{
unsigned char buffer[5];
int i;
unsigned char patchbytes[5] = { 0xCC, 0xCC, 0xCC, 0xCC, 0xCC};

DWORD pid = atoi(argv[1]);

HANDLE hproc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);

if (!hproc)
{
printf("open failed\n");
return -1;
}

ReadProcessMemory(hproc, (void*)0x77992FF5, buffer, 5, NULL);

printf("Before:\n");
for (i = 0; i < sizeof(patchbytes); i++) {

printf("%02x \t", buffer[i]);

}

printf("\n");
WriteProcessMemory(hproc, (void*)0x77992FF5, patchbytes, 5, NULL);

printf("After:\n");
for (i = 0; i < sizeof(patchbytes); i++) {

printf("%02x \t", buffer[i]);

}

FlushInstructionCache(hproc, NULL, 0);

CloseHandle(hproc);

return 0;

}

所以我读取前五个字节,然后覆盖它,检查覆盖前后字节的值。但它给我的是一样的,所以字节没有改变。我做错了什么?

最佳答案

您只需将最初读取的缓冲区打印两次。

WriteProcessMemory 之后加入另一个 ReadProcessMemory(hproc, (void*)0x77992FF5, buffer, 5, NULL);

关于c - 如何在 C 中更改进程的十六进制转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53390099/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com