Einzelnen Beitrag anzeigen

Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Delphi Code-Injection JMP Adresse ermitteln...

  Alt 20. Mai 2009, 20:02
Das kann nicht funktionieren.
Delphi-Quellcode:
procedure Inject;
begin
  asm
    push mem <-- Sprungstelle zum Code-Cave ... Adresse wird weiter unten im Quelltext ermittelt
    ret
    nop
  end;
end;
Das bedeutet nicht, daß da mem durch die Adresse die in mem steht getauscht wird. Dazu müsste sich der Code selbst modifizieren zur Laufzeit. Stattdessen wird daraus:
Delphi-Quellcode:
push dword ptr [Adresse von mem]
ret
nop
Da an der Adresse im fremden Prozess aber irgendetwas steht nur wahrscheinlich nicht die Adresse der Code Cave, wird entsprechend der falsche Wert gelesen und auf den Stack gepackt .

Lösung: Mach Inject zu nem Byte Array. In das packst die korrekten Opcodes (Intel Manual) und die korrekte Adresse zu der gesprungen werden soll und schreibst das Byte Array in den Zielprozess.
Fridolin Walther
  Mit Zitat antworten Zitat