Zum Inhalt wechseln

Willkommen Gast

Navigation

Links

Als Gast hast du nur eingeschränkten Zugriff!


Anmelden 

Benutzerkonto erstellen
Du bist nicht angemeldet und hast somit nur einen sehr eingeschränkten Zugriff auf die Features unserer Community.
Um vollen Zugriff zu erlangen musst du dir einen Account erstellen. Der Vorgang sollte nicht länger als 1 Minute dauern.
  • Antworte auf Themen oder erstelle deine eigenen.
  • Schalte dir alle Downloads mit Highspeed & ohne Wartezeit frei.
  • Erhalte Zugriff auf alle Bereiche und entdecke interessante Inhalte.
  • Tausche dich mich anderen Usern in der Shoutbox oder via PN aus.
 

   

Foto

C++ Simples HotPatch Api Hooking (32bit only)

- - - - -

  • Bitte melde dich an um zu Antworten
Eine Antwort in diesem Thema

#1
o0o

o0o

    Script Kiddie

  • Members
  • PIPPIPPIPPIP
  • Likes
    27
  • 33 Beiträge
  • 13 Bedankt

Please Login HERE or Register HERE to see this link!

 

 

Ein kleines Beispiel welches zeigt wie man WinApis hooken kann, mittels der von Microsoft so beabsichtigten Hotpatch-Methode

(Eine bessere Erläuterung dazu hier 

Please Login HERE or Register HERE to see this link!

 

Kurz erklärt sind die ersten beiden Bytes der Api mov edi, edi, was überhaupt nichts macht. Und vor der Funktion sind mindestens 5 Bytes frei. Man überschreibt also die ersten beiden Bytes mit einem jmp $ - 5, also 5 zurück. Und in die 5 bytes plaziert man dann die lange jmp instruction zu deiner Hooking-Funktion. Das hat den kleinen Vorteil, dass man keine Trampolin-Func braucht sondern einfach (OriginaleAddresse + 2) aufrufen kann um den Jmp zu skippen.

 

Sollte so in jedem 32bit Prozess mit den allermeisten Windows Apis funktionieren.

Eine Ausnahme sind die syscall-wrapper in ntdll.dll, z. B. NtQuerySystemInformation.

 

Zu denen kann ich aber sonst irgendwann mal was posten.


<3 is all you need


#2
rat123

rat123

    Member

  • Premium Member
  • Likes
    95
  • 107 Beiträge
  • 29 Bedankt
  • verifiziert

Hotpatching geht nur mit APIs welche eine relative jmp instruction haben. Im Beispiel wird MessageBoxA genommen, eine Hotpatchable Funktion. Du überschreibst mov edi, edi mit einer 2 byte relative jmp bis zu 5 bytes und da plazierst du einfach den call zu deinem hook. 

Trampoline hooks sind da besser geeignet, allein weil relative jmps selten bei WinAPIs vorkommen.

Aber man könnte in der Patching Engine einfach gucken ob mov edi, edi present ist und entsprechend die patching routine vorbereiten. Hotpatching hooks sind dann natürlich die leichtere Variante.


Eingefügtes Bild




  Thema Forum Themenstarter Statistik Letzter Beitrag

Besucher die dieses Thema lesen: 2

Mitglieder: 0, Gäste: 2, unsichtbare Mitglieder: 0

Die besten Hacking Tools zum downloaden : Released, Leaked, Cracked. Größte deutschsprachige Hacker Sammlung.