C++ DLL のソース コードがあります。この DLL はアプリケーションの一部です。別の DLL によってメモリにロードされた関数をフックして、フックされた関数が元の関数ではなく他のすべての DLL によって呼び出されるようにします。このコードをコードに入れました:
#include <windows.h>
#include "detours.h"
#pragma comment(lib, "detours.lib")
//Function prototype
int (__stdcall* OriginalFunction)();
//Our hook function
int FunctionHook()
{
//Return the real function
return OriginalFunction();
}
//On attach set the hooks
OriginalFunction = (int (__stdcall*)())DetourFunction((PBYTE)0x0100344C, (PBYTE)FunctionHook);
問題は、1 つの DLL でオフセットを検索し、このオフセットで関数にパッチを適用するのは間違っているのではないでしょうか (別の DLL にいて、すべての DLL の関数をフックしたいので、より複雑だと思います)。ところで、IDA PRO で標準 (fex. 0x0100344C) オフセットを取得する方法を知っている人はいますか?