簡體   English   中英

沒有目標 DLL 的鈎子函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM