3

__usercall関数のフックタイプについて誰か知っていますか?フックに成功し__thiscall、電話__stdcall__cdeclかけましたが、これで十分です。

__usercallのライブラリをフックしている人、またはへの変換を使用してこのタイプの関数をフックする方法を知っています__stdcall__cdecl

私が最初にフックしなければならない関数は次のとおりです。

int __usercall func<eax>(int a<eax>, int b<ecx>, int c, unsigned int d, signed int e);
4

2 に答える 2

5

に変換するラッパーを使用します__stdcall

int __stdcall func_hook_payload(int a, int b, int c, unsigned int d, signed int e);

// Wrapper for
// int __usercall func<eax>(int a<eax>, int b<ecx>, int c, unsigned int d, signed int e);
__declspec(naked) void func_hook()
{__asm{
    push ebp
    mov ebp, esp
    push dword ptr[ebp + 0x0C] // or just push e
    push dword ptr[ebp + 0x08] // d
    push dword ptr[ebp + 0x04] // c
    push ecx // b
    push eax // a
    call func_hook_payload
    leave
    ret // note: __usercall is cdecl-like
}}
于 2010-11-04T20:47:02.697 に答える
2

他のすべてが失敗したとき..デバッガーでそれをウォークスルーします。

特に、呼び出しに入るとき、および関数が戻る直前に、ESPのようにこれらに注意してください。

于 2010-11-05T03:45:30.507 に答える