Ergebnis 1 bis 2 von 2
  1. #1
    is a Grammar Nazi Avatar von Hamtaro
    Registriert seit
    05.06.2007
    Beiträge
    431

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

    https://git.free-hack.com/hamham/hotpatch_hooking

    Ein kleines Beispiel welches zeigt wie man WinApis hooken kann, mittels der von Microsoft so beabsichtigten Hotpatch-Methode
    (Eine bessere Erläuterung dazu hier https://blogs.msdn.microsoft.com/old...921-00/?p=9583)

    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 diese 5 bytes platziert 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 z. B. die syscall-wrapper in ntdll.dll, z. B. NtQuerySystemInformation.


    Zu denen kann ich aber sonst irgendwann mal was posten.
    Geändert von H4x0r007 (26.02.2017 um 19:14 Uhr) Grund: Graue Farbe entfernt - geht bei hellem Theme kaputt
    Sunshine, hurricane
    All the highs & lows

  2. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    Leange (23.02.2017), sn0w (23.02.2017), zzurc (23.02.2017)

  3. #2
    Bad Times Virus
    Registriert seit
    14.03.2009
    Beiträge
    579

    Standard AW: C++ Simples HotPatch Api Hooking Beispiel (32bit only)

    Äh, man sollte zuerst den 0xE9 Sprung schreiben.


    Stell dir vor das Program das du gerade patchen willst will genau in diesem Moment MessageBoxA ausführen.
    Code:
    NOP
    NOP
    NOP
    NOP
    NOP
    MOV EDI, EDI 
    whatever
    ist der normale Code. Jetzt fängst du an zu patchen aber dein Thread (Thread A) wird unterbrochen.


    Code:
    NOP
    NOP
    NOP  <-- EIP
    NOP
    NOP
    JMP -5
    whatever
    Der andere Thread B führt jetzt in einer Endlosschleife immer NOPs aus. Erstmal nicht schlimm, aber irgendwann wird ja auch B unterbrochen und du kannst weiter patchen.


    Code:
    JMP hook
    JMP -5
    whatever
    Nur leider sieht es für B so aus:


    Code:
    0xE9 
    0xAF
    0xFE  <-- EIP
    0x12
    0x34
    JMP -5
    whatever
    und dann versucht es einen Teil der Adresse als Befehl zu interpretieren. 


    (Ich ignoriere hier jetzt mal instruction caches)

Ähnliche Themen

  1. Javascript-Function Hooking [HowTo]
    Von Cystasy im Forum Javascript
    Antworten: 0
    Letzter Beitrag: 10.05.2015, 13:11
  2. Direct Injection API Hooking Framework
    Von ocz im Forum Konzepte und Vorstellungen
    Antworten: 3
    Letzter Beitrag: 21.12.2010, 16:17
  3. Simples PHP Scripte!
    Von kriw im Forum PHP
    Antworten: 2
    Letzter Beitrag: 10.08.2009, 10:15
  4. C++ [hooking] question
    Von 1312 im Forum C, C++
    Antworten: 2
    Letzter Beitrag: 29.08.2008, 21:26
  5. GameTrainer + Message Hooking
    Von syntex im Forum Trashbox
    Antworten: 0
    Letzter Beitrag: 06.09.2007, 14:39

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •