![]() |
Hook für Windows 7 64 Bit?
Hallo,
Ich habe mich mal an das Thema Hooks rangewagt und bin auf uallHook.pas gestoßen. Leider musste ich feststellen, dass die Beispiele nur unter Windows XP 32 Bit laufen aber nicht unter Windows 7 64 Bit. Jetzt habe ich ![]() Leider lässt sich uallHook nicht unter Lazarus kompilieren. Wie kann ich trotzdem einen Hook schreiben, der sowohl auf 32 wie auf 64 Bit Systemen funktioniert? |
Re: Hook für Windows 7 64 Bit?
Zitat:
aber wenn du nicht verrätst was da nun nicht geht, können wir auch nichts machen. Zitat:
Denn um einen 32-Bit-Prozess zu hooken brauchst du einen 32-Bit-Hook und um einen 64-Bit-Prozess zu hooken brauchst du einen 64-Bit-Hook. Und man kann eine Anwendung/DLL nunmal nur für 32 oder 64 Bit compilieren. |
Re: Hook für Windows 7 64 Bit?
Liste der Anhänge anzeigen (Anzahl: 1)
Also ich habe jetzt doch versucht uallHook wenigstens in Lazarus kompilierbar zu machen. In dem angehängten Archiv unter dem Pfad uallTest\Test.dll\ sind jetzt die "übersetzten" Dateien (Achtung viele Warnungen beim kompilieren unter Lazarus).
Außerdem bekomme ich beim kompilieren der DLL in Lazarus einen Fehler: DLLProc ist nicht definiert. |
Re: Hook für Windows 7 64 Bit?
Liste der Anhänge anzeigen (Anzahl: 1)
Also ich hab mich jetzt den ganzen Sonntag dran gesetzt und eine Lösung gefunden:
Mit dem angehängten Code kann man unter Lazarus eine DLL erstellen, die durch Delphi gehookt werden kann. Folglich sollte es möglich sein eine 64 Bit DLL in Lazarus zu erstellen und mit Delphi in ein 64 Bit System zu hooken. Leider hab ich es noch nicht unter einem 64 Bit System ausprobiert. Ein Beispiel mit einer MessageBox liegt bei. |
Re: Hook für Windows 7 64 Bit?
Zitat:
1. Mit Delphi lassen sich doch derzeit nur 32-Bit-Programme erzeugen?! Also, mit einem 32-Bit-Hostprogramm funktioniert der Aufruf eines Hooks einer mit Lazarus erstellten 64-Bit-DLL nicht. Sofern ich mich recht entsinne, gab es sogar die Fehlermeldung, daß der Einsprungpunkt nicht gefunden wurde. Fazit: Auf diese Weise scheint eine völlige Inkompatibilität zwischen 32 und 64 Bit zu herrschen. Das (ver)wundert mich aber insofern, als daß auch andere 32-Bit-Programme auf Windows 64 Bit laufen und dabei natürlich auch die betriebsprogrammeigenen DLLs, konkret deren Funktionen (be)nutzen. 2. Mit einem mit Lazarus erstellten 64-Bit-Hostprogramm klappt die Kommunikation beider Dateien, zumindest grundsätzlich, und man kann sich tatsächlich eines installierten Hookes erfreuen. |
Re: Hook für Windows 7 64 Bit?
Zitat:
|
Re: Hook für Windows 7 64 Bit?
Lazarus hat ein Problem beim auflisten der Prozesse also funktionieren oben angehängte Dateien nicht!
Ich habe mich jetzt dazu entschlossen in C++ abgesehen von der x32 DLL (Delphi) eine x64 DLL zu schreiben und einen x64 Injector. Mein Hauptprogramm (Delphi) soll dann prüfen ob das System ein 64 Bit System ist; wenn ja dann wird zusätzlich noch der x64 Injector gestartet. Das Hauptprogramm kümmert sich dann über das hooken der 32 Bit Prozesse, der Injector um die 64 Bit Prozesse. Jetzt habe ich aber 2 Fragen: - Wie stelle ich fest ob ein 32 Bit oder ein 64 Bit Betriebssystem läuft? - Wie stelle ich fest ob ein Prozess 32 Bit oder 64 Bit ist? |
Re: Hook für Windows 7 64 Bit?
Zitat:
Ich bemerkte nämlich ähnliches und meldete das vor etlichen Wochen bereits ![]() Zum Glück kann ich für mein Programm auch den Modulschnappschuß verwenden. Darf ich Sie/Dich fragen, welche Windows-64-Bit-Version bei Ihnen/Dir davon betroffen ist? Ich nutze zur Zeit nur XP, Windows 6.1 (das angebliche 7) soll bald folgen (solche Alphasoftware wie Vista kommt mir nimmmer auf die Festplatte). Vielleicht - nur so als vorsichtige Anregung - könnten Sie / könntest Du ebenfalls einen Bugreport eröffnen, ggf. mit anderen, weiteren Informationen?! Das würde den Druck erhöhen. Oder wenigstens in meinem Report einen zusätzlichen Kommentar abgeben?! Optimal wäre natürlich, ein eigenes Programm (das aus dieser Diskussion?) dort (in einem eigenen Bericht) hochzuladen, das verbessert die Beweislage ungemein. Was mich irritiert(e), ist, daß - die Prozeßenumeration mit einem 32-Bit-Lazarus-Compilat unter Windows 64 Bit funktioniert und - eigentlich nur DLL-Funktionen aufgerufen werden. Alternativ gibt es noch die unelegante („unlässige“) Prozeßenumeration über psapi, die die ursprünliche der NTx-Windows-Baureihe ist und eigentlich bis heute in den Versionen als Altlast auch mitgeschleppt werden müßte. |
Re: Hook für Windows 7 64 Bit?
Zitat:
![]() |
Re: Hook für Windows 7 64 Bit?
@Delphi-Laie:
1. Du/Sie können mich ruhig duzen. 2. Ich bin schon über deine / Ihre Berichte gestoßen aber leider kenne ich mich jetzt auch nicht so übermäßig mit dem Thema aus; ich habe nur die uallHook so umgeschrieben, dass der Kompiler nicht mehr motzt. @jfheins: Danke das sollte mein Problem lösen. |
Re: Hook für Windows 7 64 Bit?
Zitat:
Aber die Windowsversion mit den 64 Bit darf ich noch erfahren, bitte?! |
Re: Hook für Windows 7 64 Bit?
Also ich habe das bei meinem Bruder getestet. Er hat Vista 64 Bit.
|
Re: Hook für Windows 7 64 Bit?
Danke!
Dann könnte das also ein windowsversionsübergreifendes und mithin doch Lazarusinternes Problem sein, was ich ohnehin vermute bis vielleicht ahne. Windows 6.1 („7“) wird irgendwann in den nächsten 1-2 Wochen bei mir folgen, vielleicht schließt sich dann die Schlinge (sozusagen). |
Re: Hook für Windows 7 64 Bit?
Wenn du eine kleine Exe in Lazarus schreibst und hier postest kann ich es einem Freund zum testen geben, der Windows 7 bereits hat.
|
Re: Hook für Windows 7 64 Bit?
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
Tausend Dank für die Gefälligkeit und Aufmerksamkeit und im voraus für die Mühe! |
Re: Hook für Windows 7 64 Bit?
Zitat:
Ist aber vermutlich inzwischen egal, denn nunmehr bin ich „stolzer“ Besitzer einer Windows-7-64-Bit-Installation. Und? Es kam, wie es kommen mußte: Die Probleme sowohl mit dem Prozeß- also auch mit dem Modulschnappschuß (und entprechenden nachfolgenden Prozeß- bzw. Modulenumerationen) sind genau die gleichen! Ich schrieb das auch gleich in den Bugtrucker, der leider bis heute nicht einmal ein „acknowledged“ oder gar ein „confirmed“ für meine Fehlermitteilung übrighatte. Daß die Fehlerbehebung deutlich länger dauert (vermutlich ein subtiler Fehler), sehe ich ein, aber so fühle ich mich natürlich irgendwie ein bißchen allein im Regen stehengelassen. |
Re: Hook für Windows 7 64 Bit?
Sorry,
ich hab meinen Freund erst gestern erreicht und wir wollten das dann am Wochenende testen. Aber du bist uns zuvor gekommen :lol: |
Re: Hook für Windows 7 64 Bit?
Zitat:
|
Re: Hook für Windows 7 64 Bit?
Hi,
ich als der besagte Freund habe deine Programme mal auf Windows 7 Home Premium 64 bit getestet. Ich schreibe also jewils was im Anwendungs-Edit stand. Modulschnappschuss: 32 Bit: Windows Fenster werden nicht als explorer.exe angezeigt; Third Party Fenster schon. 64 Bit: Alle Fenster werden angezeigt. Prozessschnappschuss: 32 Bit: Alle Fenster werden angezeigt. 64 Bit: Nichts wird angezeigt. ich hoffe das hilft und falls noch Fragen oder Tests vorhanden sind stehe ich gerne bereit. Ich kann auch Screenshots machen falls euch das mehr sagt. mfg Patrick |
Re: Hook für Windows 7 64 Bit?
Hallo Patrick, vielen Dank!
Inzwischen tat sich einiges: 1. Parallel zu meinem Windows XP 64 Bit installierte ich auch Windows 6.1 („7“ - ich bringe es einfach nicht übers Herz, diese nächste mikroweiche Halblüge unkritisch bzw. unkommentiert zu übernehmen) 64 Bit, habe aber auf beiden, wie eigentlich erwartet, identische Ergebnisse. 2. Im Lazarus-Bugtrucker wurde ich auf ein Pendant zu tlhelp32 - tlhelp64 - aufmerksam gemacht, das in einem anderen Fehlerreport gespeichert ist. Damit ist mein Problem eigentlich behoben, nur das, worauf ich im Verlaufe des Bugreportes stieß, noch nicht: Der Modulschnappschuß im 32-Bit-Kompilat funktioniert unter Windows 64 Bit nur eingeschränkt: Nur der Name des eigenen Programmes wird zurückgeliefert, nicht jedoch fremder Programme. Zitat:
Vielen Dank und freundlicher Gruß Delphi-Laie |
Re: Hook für Windows 7 64 Bit?
Hat das ganze denn noch etwas mit der ursprünglichen Frage zu tun?
|
Re: Hook für Windows 7 64 Bit?
Bin gestern über 2 Beiträge im Emba-CodeCental gestolpert, welche aktuell eventuell für Delphi und 64 Bit interessant sein könnten:
![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:25 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