Connect call function in C ++?

Hi folks,
             I am a curious novice with C ++, but I managed to create my own dll and enter it in my gameserver.exe file

Well, I tried a few days to hook on a custom call function, but I always fail, because it belongs to the assembly :(
I would like you guys to show me how I write the correct lines for this function:

0048C1AF  |. 8B9B 4C010000  MOV EBX,DWORD PTR DS:[EBX+14C]
0048C1B5  |. 8B13           MOV EDX,DWORD PTR DS:[EBX]
0048C1B7  |. 8B82 EC000000  MOV EAX,DWORD PTR DS:[EDX+EC]
0048C1BD  |. 8BCB           MOV ECX,EBX
0048C1BF  |. FFD0           CALL EAX
0048C1C1  |. 8BF8           MOV EDI,EAX
0048C1C3  |. E8 789EF8FF    CALL SR_GameS.00444040
0048C1C8  |. 8B7C24 1C      MOV EDI,DWORD PTR SS:[ESP+1C]
0048C1CC  |. 8BF0           MOV ESI,EAX
0048C1CE  |. E8 6D9EF8FF    CALL SR_GameS.00444040

What I wrote in C ++ so far:

void __cdecl Global()
{

    __asm
    {

           mov msg, edi; //msg

           push ebx;
           mov ebx, dword ptr[esp+1C]; //playername
           mov playername, ebx;
           pop ebx;
    }

    printf("Global [%s] -> %s\n", playername, msg);

    //then calling func entry
    CALL((DWORD)0x00444040);
}

when 0048C1CE is ever called, I get it in my C ++ and move it to global () until everything stops here, but inside Global () I cannot call back the parameters successful in x00444040, even if they display strange values ​​in console window and sometimes show part of the player’s message.

P.S. , , .

, .

+4
2

, . , , , , . , .

. , 3 . , , 0x00444040, . , .

++ .

  • . , ESI EDI .
  • ++, , .
  • , , , (JMP not CALL) hooked, , .

, ( ) , , , .

+1

, , , , david.pfx.

, , , , . ( Half-Life 2) SourceHook. SourceHook AlliedModder, SourceMod.

, , SourceHook - , . mHook, .

, , .

0

All Articles