Gut, der dargestellte Abschnitt ist zu klein um eine vernünftige Aussage zu erlauben.
Die 5 Bytes bei 4BC877 ersetze ich mit einem jmp zu meiner SendPacket Methode. Das mov eax,00b... ist also nur der originale Opcode und dann wird der originale Code weiter ausgeführt (SendPacketRet: Cardinal = $4BC877 + 5).
Mehr weiß ich leider auch nicht, außer dass ecx einen Pointer auf einen record mit dem Paket enthält.
Tja, dann empfehle ich dir erstmal keine Annahmen zu treffen, wie du es getan hast. Nehmen wir erstmal einfach das stdcall raus. Also:
Code:
procedure SendPacket;
asm
mov eax, [ebp]
mov eax, [eax+$04]
push eax
call OnSendPacket
mov eax,$00BF0044
jmp dword ptr [SendPacketRet]
end;
Bei OnSendPacket
bleibt es!
... dann versuch mal. Ansonsten mußte vielleicht mal mehr vom Originalcode und von deinem Code rausrücken, denn sonst wird es schwer überhaupt was zu sagen (ohne zu raten).