сбой процесса, когда я читаю / записываю память с помощью DLL

Я написал программу hackme, и я хочу подключить ее и заставить брутфорс взломать ее (с помощью dll-инъекции).
проблема в том, что когда я пытаюсь писать или читать память, происходит сбой процесса (это происходит со мной не только с программой hackme, но и с каждой программой), хотя я даю себе права на написание и чтение с помощью VirtualProtect,

  • Если я добавлю сообщение в dll, оно будет работать.

Вот DLL, которая должна препятствовать процессу печатать что-либо (с NOPing):

#include "DLL.h"#include <windows.h>
#include <tlhelp32.h>

BOOL APIENTRY DllMain(HINSTANCE hInst, DWORD reason, LPVOID reserved)
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
DWORD threadId;
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&ThreadProc, NULL, 0, &threadId);
break;

case DLL_PROCESS_DETACH:
break;

case DLL_THREAD_ATTACH:
break;

case DLL_THREAD_DETACH:
break;
}
return true;
}

DWORD ThreadProc(LPVOID lpdwThreadParam)
{
VirtualProtect((LPVOID)0x00417D10, 5, PAGE_EXECUTE_READWRITE, NULL);
*(char *)0x00417D10 = 0x90;
*(char *)0x00417D11 = 0x90;
*(char *)0x00417D12 = 0x90;
*(char *)0x00417D13 = 0x90;
*(char *)0x00417D14 = 0x90;
return 0;
}

Вот информация об адресе в процессе, на который я пишу:
http://prntscr.com/2bveja (с МАР)

DLL, инжектор и хакме скомпилированы для 32-битных.
Я использую win7 64b.

0

Решение

Было 2 проблемы:

  1. VirtualProtect не может получить NULL в последнем параметре (старая привилегия).
    Поэтому я дал ему указатель на DWORD переменная.

  2. Я дал VirtualProtect постоянный адрес, но это не очень хорошо, так как в Windows 7 база изображений изменяется при каждом выполнении, поэтому я обнаружил базу изображений процесса и добавил к ней смещение 0x12d1,

HMODULE hand = GetModuleHandle(L"HackMe.exe");
VirtualProtect((LPVOID)((DWORD)hand + (DWORD)0x12d1), 6, PAGE_EXECUTE_READWRITE, &oldp);

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector