我写了一个hackme程序,我想挂钩它并使bruteforce破解它(用dll注入)。 问题是当我试图写或读内存时,虽然我给自己写了一个VirtualProtect
的私钥,但这个过程崩溃了(它发生在我身上,不仅仅是hackme程序,而是每个程序)。当我用dll注入读/写内存时进程崩溃
- 如果我将消息框添加到该dll,该消息框的作品。
这里是假设从过程中要防止打印的东西(与NOPing)的dll:
#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 (with IDA)
dll,注入器和hackme都是为32bit编译的。 我正在使用win7 64b。
从来没有认为你的DLL将在一个特定的地址被加载,系统不做任何保证,它是从安全的角度来看一个可怕的做法。如果您需要更改流程的流程,请使用[Detours](http://research.microsoft.com/en-us/projects/detours/)或Use [Hotpatching](http://msdn.microsoft.com/zh-cn/ COM/EN-US /库/ ms173507.aspx) – Mgetz