1
我編寫了一個dll。在這個DLL中,我想掛鉤另一個DLL的函數加載到內存中。這是許多小時工作的結果:C++函數鉤子(dll,asm)
typedef int (__fastcall *def_cry)(int a,int b,int fromlen);
def_cry Real_cry;
int __fastcall custom_cry(int a,int b,int fromlen) {
Log("cry ...");
__asm nop;
return Real_cry(a, b, fromlen);
}
DWORD imageBaseOtherDll = 0x39500000;
DWORD functionOffset = 0x395742F8;
DWORD imageBase = (DWORD)GetModuleHandle("otherDll.dll");
DWORD functionOffset = imageBase + (functionOffset - imageBaseOtherDll);
Real_cry = (def_cry)DetourFunction((PBYTE)functionOffset,(PBYTE)&custom_cry);
看來,我的鉤子不起作用。我認爲我在代碼中添加了一些邏輯錯誤,但我是一名初學者和nned幫助!
asm - 請添加一些細節,例如您到目前爲止所嘗試的內容,以及您認爲問題所在。縮小問題的焦點。如果你問「你能看看這個並修復它嗎?」你的問題將被拒絕並關閉。 – Josh
(+1) - 人是新的,不要讓他想通過「-1」來逃離計算器...我認爲這個問題很明顯。 – Cipi