2
我有2个FARPROC,我想用另一个使用ASM替换另一个的地址。如何使用ASM将FARPROC的内存地址移动到另一个函数?
什么是FARPROC? “[int(FAR WINAPI * FARPROC)()]在C语言中,FARPROC声明表示一个具有未指定参数列表的回调函数。但是,在C++中,声明中的空参数列表表示函数没有参数。微妙的区别可以打破粗心的代码下面是处理这种情况的一种方式:”
现在,多数民众赞成覆盖,这是我的代码:
HMODULE h = LoadLibrary("myDLL.dll");
FARPROC p = GetProcAddress(h, "[email protected]");
if(!p) MessageBox(hwnd, "injected, but function not found", "Loader", NULL);
HMODULE dllHmodule = GetModuleHandle("InjectFunctions.dll");
FARPROC injproc = GetProcAddress(dllHmodule, "[email protected]");
if(!injproc) MessageBox(hwnd, "injproc is null", "Loader", NULL);
__asm{
mov eax, p
ADD injproc [EAX],8
}
我的问题是我如何使它所以当程序加载这个DLL调用p它会调用injproc?
听起来像你试图做一些恶意的东西:) – OregonTrail 2013-03-07 16:57:50
知道如何做这些事情并不是恶意的,它只是恶意使用这些东西的邪恶,我打算不这样做:) – CyanPrime 2013-03-07 16:59:02