3

最近は、関数へのフックとコールバック関数の作成について研究しています。テクニック全体を完全には理解していませんが、Windows API の ReadProcessMemory() 関数をフックして、何かがメモリを読み取るたびにプロセスに関数を呼び出させるようなことができるはずです。興味本位でやってみたかったのですが、Windowsの機能にフックすることで、オンラインゲームのハッキング防止に非常に役立ちそうです。

残念ながら、このテーマに関するチュートリアルや記事などが大幅に不足しています。私は多くのインジェクション コードに目を通しましたが、理解の欠如が私を妨げています。私がやりたいことは可能ですか?誰かが私を正しい方向に向けることができますか?

オブジェクト指向プログラミングから喜んで踏み出すのはこれが初めてなので、これが意味をなさない場合は申し訳ありません。

4

1 に答える 1

2

フック関数を使用します。

BOOL WINAPI hkReadProcessMemory( HANDLE hProcess, LPCVOID lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesRead)
{

    if (GetCurrentProcess() == hProcess) {

           // your process
    }
        return oReadProcessMemory( hProcess, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesRead);

}

関数の typedef:

typedef BOOL (WINAPI* _NtReadProcessMemory)( HANDLE hProcess, LPCVOID lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesRead);

古い関数を宣言します:

_NtReadProcessMemory oReadProcessMemory = (_NtReadProcessMemory)
GetProcAddress(GetModuleHandle(L"ntdll"), "NtReadProcessMemory");

インストール迂回:

BOOL bHook = Mhook_SetHook((PVOID*)&oReadProcessMemory, 
            hkReadProcessMemory));

明らかに、システムで実行されているすべてのプロセスにこの DLL を挿入する必要があります。

Mhook: (迂回ライブラリ) http://codefromthe70s.org/mhook22.aspx

于 2013-07-30T22:25:47.207 に答える