AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

"Hooken", der Jumpbefehl etc

Ein Thema von Neutral General · begonnen am 25. Apr 2008 · letzter Beitrag vom 25. Apr 2008
 
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

"Hooken", der Jumpbefehl etc

  Alt 25. Apr 2008, 15:18
Hi,

Mein langfristiges Ziel ist ein API-Hook. Jedoch bin ich gerade selbstständig etwas am rumspielen und am rumprobieren. Das ganze hat wahrscheinlich nicht viel mit API-Hooks zu tun aber das ist jetzt nicht wichtig.

Ich knall euch einfach Code vorn Kopf:

Delphi-Quellcode:
procedure DerAndere;
begin
  ShowMessage('Da bin ich!');
end;

procedure Opfer;
begin
  ShowMessage('Opfer!');
end;

procedure TForm1.Button2Click(Sender: TObject);
var hProc: THandle;
    br: Cardinal;
    jmp: Pointer;
begin
  GetMem(jmp,5);
  hProc := OpenProcess(PROCESS_ALL_ACCESS,false,GetCurrentProcessID);
  try
    PByte(jmp)^ := $E9;
    inc(PByte(jmp));
    PCardinal(jmp)^ := Cardinal(@DerAndere);
    dec(PByte(jmp));
    WriteProcessMemory(hProc,@Opfer,jmp,5,br);
  finally
    FreeMem(jmp);
    CloseHandle(hProc);
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  Opfer;
end;
Erreichen will ich, das zur procedure "DerAndere" gejumpt wird, wenn man "Opfer" aufruft.
nach dem Button2-Klick steht auch ein Jump Befehl am Anfang der Opfer-Procedure, der auch ausgeführt wird, aaaber schaut euch das Bild im Anhang an. Die Adresse wird immer als relative Adresse aufgefasst... dadurch hüpft er natürlich ins Nirvana, was nicht gewollt ist.

Delphi-Quellcode:
asm
  jmp DerAndere
end;
Da funktioniert es ja auch.. Wobei ich den entstandenen OpCode nicht verstehe:

Code:
E923FFFFFF jmp DerAndere
E9 ist klar... aber $23FFFFFF ist

nicht die Adresse von der Procedure
und ein relativer Sprung kanns auch nicht sein viel zu weit weg!

Also wie mache ich das?

(Ich weiß, das ich den "Abstand" zwischen "Opfer" und "DerAndere" ausrechnen könnte und dann doch relativ springen könnte, das will ich aber nicht!)

Gruß
Neutral General
Angehängte Grafiken
Dateityp: jpg cpu_548.jpg (17,7 KB, 20x aufgerufen)
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz