私はC++ DLLのソースコードを持っています。このDLLは、アプリケーションの一部です。私は、私のフック関数は、元の関数の代わりに他のすべてのDLLによって呼び出されるように、別のDLLによってメモリに読み込まれた関数をフックしたい。私は私のコードにこのコードを置く:DLLのソースコード内のC++関数フック
#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);
質問です:私は、オフセットとオフセットこれにより、機能にパッチを適用するためにONE DLLで検索した場合(私はだから、それはより複雑だ、それは間違ってないと思います別のDLLで、すべてのDLLの関数をフックしたいですか?)ところで、誰かがIDA PROの標準(fx。0x0100344C)オフセットを得る方法を知っていますか?
すべてのDLLは1つの進捗状況にあり、DedicatedServer.exeです。メモリを上書きすることによって関数をフックする方法は? –
[http://xulrunner-1.9.2.sourcearchive.com/documentation/1.9.2.13plus-pbuild1plus-pnobinonly/nsWindowsDllInterceptor_8h-source.html]を参照してください。これは、 "trampline hook"を使用するmozillaソースコードです。 。ただし、Detourを使用できる場合は、自分でコードをハックすることはお勧めしません。 – winterTTr
この参照は、構文のハイライト[https://bitbucket.org/MeeGoAdmin/mozilla-central/src/ace9b0ca623c/toolkit/xre/nsWindowsDllInterceptor.h]でより明確になると思われます。 – winterTTr