Как изменить шестнадцатеричный дамп процесса в C - PullRequest
0 голосов
/ 20 ноября 2018

я написал этот код, чтобы изменить шестнадцатеричный дамп выбранного процесса, вот код:

#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;

}

, поэтому я читаю первые пять байтов, затем перезаписываю его, проверяю значениябайты до и после их перезаписи.но это дает мне то же самое, поэтому байты не изменились.что я делаю не так?

1 Ответ

0 голосов
/ 20 ноября 2018

Вы просто печатаете первоначально прочитанный буфер дважды.

Бросок в другой ReadProcessMemory(hproc, (void*)0x77992FF5, buffer, 5, NULL); после WriteProcessMemory.

...