目前我正在嘗試查找是否從注入的DLL調用了我的可執行文件中的函數(Foo())。檢測函數是否被注入的DLL調用
我的第一個想法是打電話GetModule(NULL)
,然後檢查結果與GetModule("InjectedDllName")
給出的地址,所有這些都在Foo()內完成。
高亮GetModule(NULL)
將返回可執行文件的地址而不是當前調用模塊的地址。有沒有其他解決方案可以解決我的問題?
我的另一個想法是定位線程的起始地址,當foo()被調用,並檢查這是否在注入的dll地址空間,不知道如果這是可能的。
「初始調用模塊」?如果這不是「可執行」的多餘名稱,它是什麼? –
如果您打算將其用作安全機制,請注意惡意代碼可以無條件跳轉到現有的DLL函數調用。即如果'Foo()'調用Bar()',那麼'Foo'中的無條件跳轉仍然會調用Bar()。通常你必須查找返回地址。 – MSalters
編輯這個問題有點讓人更容易理解。 – user3324551