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