[英]Hook functions with no target DLL
我正在為 exe 編寫分析工具。 我有這個 exe 的源代碼,所以我知道它使用了哪些功能。 我需要掛鈎幾個特定的函數,以便我可以檢查傳遞的參數。 我感興趣的函數不是任何 DLL 的一部分,但它們是程序的一部分。
我開始使用 Detours 編寫一個鈎子 DLL 來攔截函數調用。 我編寫了掛鈎 DLL,在其中指定了要掛鈎的函數,但不幸的是,由於沒有可引用的 DLL,當我編譯掛鈎 DLL 時,我無法解析函數名稱。
我怎么解決這個問題?
不是一個完美的解決方案,但它會解決你的問題:
您可以通過在目標程序中執行以下操作來獲取函數的相對偏移量:
int FuncToGet()
{
int x = 5;
return x;
}
int main()
{
intptr_t baseAddr = (intptr_t)GetModuleHandle(NULL);
intptr_t relativeoffset = baseAddr - (intptr_t)&FuncToGet;
std::cout << "Relative offset = 0x" << std::hex << &relativeoffset;
}
您可以使用它來打印出要掛鈎的函數的相對偏移量。
然后將相對偏移量添加到目標進程中模塊的基地址,這是您在運行時獲得的。
然后你可以使用這個地址掛鈎函數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.