Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Execute Hook unter Vista (https://www.delphipraxis.net/129606-execute-hook-unter-vista.html)

hugo1990 22. Feb 2009 00:06


Execute Hook unter Vista
 
Ich habe mir folgende Demo heruntergeladen und getestet, leider funktioniert sie unter Vista nicht so wirklich. Also wenn ich die Buttons in der Demo drücke, wo der Editor auf 2 verschiedene Arten geöffnet wird, dann funktioniert es und ich bekomme eine Meldung, aber wenn ich im Explorer ein Programm starte, wird es einfach gestartet, ohne das ich vorher informiert werde. Also wird der Explorer zum starten keine der folgenden Funktionen verwenden: ShellExecute, CreateProcess, CreateProcessA, CreateProcessW.
Weiß jemand, welche Funktion der Explorer zum starten von Anwendungen aufruft? Weil für mein Progamm muss nur diese gehookt werden. Und bevor ich jetzt alle durchprobiere und es im Endeffekt doch nicht funktioniert, dachte ich mir, frage ich doch lieber mal, ob sich jemand damit auskennt.

brechi 22. Feb 2009 00:17

Re: Execute Hook unter Vista
 
Die DLL hat ein paar Einschränkungen:
1) sie funktioniert nur mit 32bit prozessen (ist der explorer einer?)
2) sie funktioniert nur wenn CreateProcessW zum starten des Prozesses verwendet wird
3) sie funktioniert nicht wenn die APIs dynamisch geladen werden

hugo1990 22. Feb 2009 00:32

Re: Execute Hook unter Vista
 
Also ich habe Vista x64, das dürfte ja wohl die 1. Frage beantworten.
Was muss ich machen, damit es auch für 64-bit funktioniert?

Muetze1 22. Feb 2009 00:36

Re: Execute Hook unter Vista
 
Zitat:

Zitat von hugo1990
Also ich habe Vista x64, das dürfte ja wohl die 1. Frage beantworten.

Nein, ganz und gar nicht. Das bedeutet nur, dass dein OS 32-Bit und 64-Bit Programme ausführen kann. Von daher bleibt die Frage bestehen: was führst du aus? Die 32-Bit oder die 64-Bit Version?

Zitat:

Zitat von hugo1990
Was muss ich machen, damit es auch für 64-bit funktioniert?

Wenn es denn eine 64 Bit Applikation ist, dann musst du auf den 64 Bit Delphi Compiler warten.

hugo1990 22. Feb 2009 00:41

Re: Execute Hook unter Vista
 
Also die Anwendungen, die ich ausführen möchte sind 32-bit Applikationen.
Aber beim Explorer kann ich doch gar nicht sagen, dass ich ihn in 32-bit ausführen möchte.

brechi 22. Feb 2009 00:49

Re: Execute Hook unter Vista
 
Hab Vista ganz neu:
Die Explorer.exe wird nich als *32 im Taskmanager angezeigt, von daher wird es eine 64Bit Version sein. Dort kann die DLL nich injeziert werden und somit funktioniert auch das hooken von CreateProcessW nicht. Folglich bekommst du das starten von anderen Programmen nicht mir.

Ohne 64 Bit Compiler wirst du also keine DLL in den explorer Prozess injezieren können. Somi bekommst du das starten nicht mir. Falls du das starten nicht direkt mitbekommen musst, sondern nur dass ein neues Programm läuft, würde ich die gestarteten Prozess in einem Timer einfach immer neu auslesen und mit vorherigen ergebnisssen vergleichen.

Eine andere Möglichkeit sehe ich hier leider im Moment nicht :/

hugo1990 22. Feb 2009 01:01

Re: Execute Hook unter Vista
 
Also muss, damit das ganze funktioniert nur die DLL mit einem 64-bit Compiler erstellt werden oder das gesammte Programm?
Wenn es nur das erstere ist, dann könnte ich ja den Code für die DLL in C# übersetzten und damit compiliern, denn da gibt es ja einen 64-bit Compiler. Und die Komunikation zwischen der DLL und meiner anderen Anwendung könnte ich dann mit SendMessage realisieren. Oder habe ich da jetzt einen Denkfehler drin, ist nämlich irgendwie schon verdammt spät.

brechi 22. Feb 2009 12:20

Re: Execute Hook unter Vista
 
Die 64Bit dll wirst du dann auch nicht ohen weiteres in einen 64Bit prozess mit hilfe eines 32Bit prozesses bekommen.
Notfalls musst du dir noch einen 64Bit injecter schreiben. Ich hab das aber selber noch nicht getestet, von daher sinds nur Vermutungen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz