Einzelnen Beitrag anzeigen

WorstNightmare

Registriert seit: 6. Okt 2008
159 Beiträge
 
RAD-Studio 2010 Arc
 
#8

AW: Rückkehradresse bei Hook

  Alt 20. Dez 2010, 14:13
Der originale Code sieht so aus:
http://img191.imageshack.us/img191/1056/ocode.png

Das sind genau 5 Bytes, da wird also nichts zerstückelt. Möglichkeit f) entfällt, weil das Spiel mit HackShield geschützt ist, was die Veränderungen die diese Methoden anwenden aus welchem Grund auch immer erkennt.

NewSend sieht in asm so aus:
http://img207.imageshack.us/img207/245/pcode.png

Die push Befehle unten sind Parameter für einen MessageBoxA Aufruf, der dann nicht ausgeführt wird. Großartig debuggen (z.B. break points setzen) kann ich leider auch nicht, denn dann hab ich Themida im Nacken

Edit:
Ich hatte folgenden Einfall:
Delphi-Quellcode:
function NewSend(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
const
  a: PAnsiChar = 'testa';
asm
  push eax
  push edi
  mov eax, [ebp]
  mov edi, [eax+$04]
  mov [GameRet], edi
  mov edi, [NSRet]
  mov [eax+$04], edi
  pop edi
  pop eax
  call dword ptr [SendRet]
  push 0
  push 0
  push a
  push 0
  call MessageBoxA
end;
NSRet ist die Adresse vom ersten push 0, wird vor dem Hooken gesetzt. In GameRet soll die alte Rückkehradresse.
Leider funktioniert es nur, wenn ich mov [GameRet], edi rausnehme - dann wird die MessageBox angezeigt, ansonsten passiert mal wieder gar nichts.
Warum klappt die eine Zeile nicht?

Geändert von WorstNightmare (20. Dez 2010 um 14:51 Uhr)
  Mit Zitat antworten Zitat