AGB  ·  Datenschutz  ·  Impressum  







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

Globaler API-Hook funktioniert nicht

Ein Thema von Neutral General · begonnen am 10. Mai 2008 · letzter Beitrag vom 26. Mär 2009
Antwort Antwort
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#1

Re: Globaler API-Hook funktioniert nicht

  Alt 17. Mai 2008, 15:31
In NextHook sollte es Jmp und nicht Call heißen. Wie ich bereits bemerkt habe, verändert die Rückkehradresse sonst den Stack. Außerdem solltest du die Veränderung an FindNextOld direkt beim Einrichten des Hooks vornehmen, sonst gibt es Probleme mit mehreren Threads.
Meine Lösung ist übrigens praktisch identisch mit Brechis.
Um nochmal zu deiner Frage zu meinem Code zurückzukommen:
add [esp], 14 verändert nicht esp selbst, sondern den Integer, auf den esp zeigt. Das ist zufällig die Zahl, welche zuoberst auf dem Stack liegt. Welche ist das in diesem Fall? Genau, die Adresse, die durch den Call auf den Stack geschoben wurde. Diese zeigte vorher auf @@GetReturnAddress und wird nun auf den Befehl nach dem Jump rejustiert (durch das Add stimmen die 14 Bytes übrigens nicht mehr - bei diesen Adress-Geschichten ist der Inline-Assembler leider immer ein bisschen pingelig, ich sehe ehrlich gesagt kein Problem darin, zu der Adresse einer Funktion 5 zu addieren). Ich gestehe allerdings, bezüglich des jmp offset FindNextFile + 5 nicht mitgedacht zu haben - wir verwenden hier mal wieder die Weiterleitungsfunktion und nicht jene in Kernel32.dll, aber du hast das ja schon richtig mit einer globalen Variablen korrigiert. Wir legen also für die originale FindNext-Funktion eine künstliche Rückkehradresse an. Im Prinzip ist das das selbe, was in Brechis Code mit zwei Routinen gemacht wird.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz