AGB  ·  Datenschutz  ·  Impressum  







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

Fremdes programm hookt CreateWindowEx

Ein Thema von Gruber_Hans_12345 · begonnen am 7. Mai 2013 · letzter Beitrag vom 8. Mai 2013
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

AW: Fremdes programm hookt CreateWindowEx

  Alt 7. Mai 2013, 14:27
Und das ist nur bei deinem Programm so? Was macht dein Programm?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.441 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Fremdes programm hookt CreateWindowEx

  Alt 7. Mai 2013, 14:29
Nein auch bei anderen Programmen auch, aber bei meinem eben extrem (anscheinend verwendet mein Programm sehr sehr viele solche CreateWindowEx)
im Taskmanager sehe ich es dann ja bei den BENUTZER_OBJEKTEN
und alle Programme die da eine hohe zahl haben, bei denen dauerts dann länger
Aber leider wie gesagt bei meinem Programm am schlimmsten (statt 3 Sekunden 30 Sekunden)
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.999 Beiträge
 
Delphi 12 Athens
 
#3

AW: Fremdes programm hookt CreateWindowEx

  Alt 7. Mai 2013, 15:38
Gehen wir mal davon aus, deine Vermutung wäre korrekt.
Brauchst du nur den Beweis um dem Kunden zu zeigen, dass er sich an den anderen Hersteller wenden soll?
Oder willst du wirklich die Funktionsfähigkeit des anderen Programms zu Gunsten deines Programmes verhindern ,
denn das ist so der typische Verschlimmbesserungsansatz.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.441 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Fremdes programm hookt CreateWindowEx

  Alt 8. Mai 2013, 08:38
Ja es wurde schon an das andere Programm weitergeleitet, nur das ist eben ein riesen großer Hersteller, wo ich vermute das es keine Lösung geben wird.

Daher habe ich auch noch im Hintergedanken, ob ich diesen Hook irgendwie dann auch aufheben kann, oder nur für mein Programm oder oder ...
man könnte dann ja schauen, ob es ein Problem für das andere Programm ist.

Den mein Programm ist dadurch eigentlich unbrauchbar ...
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Fremdes programm hookt CreateWindowEx

  Alt 8. Mai 2013, 10:37
Es gibt ja verschiedene Arten unter Windows etwas zu hooken. Einmal der „saubere“ Weg über SetWindowsHookEx und einmal indem man die ersten paar Bytes der Routine patcht und auf eigenen Code umleitet. WinAPI-Funktionen haben dafür extra ein paar Dummy-Operationen am Anfang.

Erstmal müsstest du rausfinden, um welche Art von Hook es sich handelt. Mit SetWindowsHookEx lässt sich CreateWindowEx zwar nicht direkt hooken, aber es kann durchaus sein, dass CreateWindowEx noch irgendeine Message an das neuerstellte Fenster schickt, die gehookt sein könnte.

Ich würde als erstes mal mit dem Debugger zur Adresse von SetWindowsHookEx springen und dort gucken, ob direkt am Anfang vielleicht irgendein Sprung-Befehl steht, der auf Patching hindeutet. In dem Fall sollte es relativ einfach sein, den Hook zu umgehen, indem du einfach die Dummy-Operationen an die Stelle zurückkopierst.

Kann dir aber natürlich nicht garantieren, wie das externe Programm auf solche Modifikationen reagiert... falls es sich wirklich um einen Kopierschutz handelt, wer weiß, ob dieser so eine Aktion nicht als „Angriff“ wertet (auch wenn es unberechtigt ist).
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.441 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Fremdes programm hookt CreateWindowEx

  Alt 8. Mai 2013, 10:49
ahso nein ich möchte nicht das andere Programm modifizieren

Ich dachte ob es eventuell gehen würde, das ich nachdem das andere Programm geladen ist, den Hook wieder lösche.
Oder sozusagen mein Programm vor diesen Hook "schütze"
sowas in der Art
eine Änderung oder Patch am fremden Programm will ich auf keinen Fall vornehmen
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Fremdes programm hookt CreateWindowEx

  Alt 8. Mai 2013, 10:59
Nein, ich meinte ja auch in deinem eigenen Adressraum. Denn falls deine Theorie stimmt, dann müsste das fremde Programm ja irgendwie Code in dein Programm injiziert haben. Trotzdem weiß man nicht, wie das fremde Programm darauf reagiert... wäre ja möglich, dass der Kopierschutz, so er denn dafür verantwortlich ist, auch regelmäßig überprüft, ob die Hooks noch da sind.
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#8

AW: Fremdes programm hookt CreateWindowEx

  Alt 8. Mai 2013, 11:03
Nun, hooks funktionieren nach folgendem Schema:
- es wird entweder rein auf korrektem Wege per SetWindowsHookEx() global (Dll) gehookt -- hier können aber nur vorgegebene Sachen abgefangen werden
- oder, die vorige Methode wird verwendet, um eine Dll in den Adressraum aller anderen Prozesse zu laden (SetWindowHookEx() macht das) damit
anschließend folgende Art von (dirty) Hook gesetzt werden kann:
-- IAT/EAT Hook (Address Table Hook)
-- Code Patching (wie der Namenlozer bereits geschrieben hat)

Was du nun machen kannst, als Hotfix, ist, zunächst einmal rausfinden, um was für Art von Hook es sich handelt - es ist entweder
IAT oder Code Patching (das sind die gängigsten)
Wenn IAT:
- die Adresse, die in der Import Table steht, ist "modifiziert" - deine Aufgabe ist es, iwie rauszufinden, wo sie sich wirklich befindet
dafür kannst du mal die hookende Anwendung terminieren, deine App normal starten und per GetProcessAddress() die korrekte Adresse ermitteln (sie liefert die modifizierte beim IAT Hook)

Wenn Code Patching:
- kann schnell erkannt werden, da die Stackframe Generierung überschrieben wurde (meisten mit einem absoluten jmp)
Siehst du soetwas, einfach zurückpatchen -- 0815 Stackframegenerirung reinschreiben

Also im Grunde müsstest du dann für deine Anwendung vom dirty Hook säubern!

Achja, noch etwas damit du nicht verzweifelst -- wenn die Hookende Anwendung beim Terminieren nicht ordentlich aufräumt bzw nicht den globalen Hook löscht, wird Windows weiterhin bei jedem Prozess den Hook laden (was ja nur ne Dll ist) - auch wenn die Anwendung geschlossen ist! Das kann verwirrend sein
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.222 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Fremdes programm hookt CreateWindowEx

  Alt 8. Mai 2013, 11:14
Oder sozusagen mein Programm vor diesen Hook "schütze"
Was passiert eigentlich wenn du dein Programm mit Adminrechten startest. Hier dürften eigene einfachen Hooks nicht aktiv sein/funktionieren.
Windows Vista - Eine neue Erfahrung in Fehlern.

Geändert von Bernhard Geyer ( 8. Mai 2013 um 11:17 Uhr)
  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 12:39 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