AGB  ·  Datenschutz  ·  Impressum  







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

Execute Hook unter Vista

Ein Thema von hugo1990 · begonnen am 22. Feb 2009 · letzter Beitrag vom 22. Feb 2009
Antwort Antwort
hugo1990

Registriert seit: 27. Dez 2006
166 Beiträge
 
Turbo Delphi für Win32
 
#1

Execute Hook unter Vista

  Alt 22. Feb 2009, 01:06
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.
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#2

Re: Execute Hook unter Vista

  Alt 22. Feb 2009, 01:17
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
  Mit Zitat antworten Zitat
hugo1990

Registriert seit: 27. Dez 2006
166 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Execute Hook unter Vista

  Alt 22. Feb 2009, 01:32
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?
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Execute Hook unter Vista

  Alt 22. Feb 2009, 01:36
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 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.
  Mit Zitat antworten Zitat
hugo1990

Registriert seit: 27. Dez 2006
166 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Execute Hook unter Vista

  Alt 22. Feb 2009, 01:41
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.
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#6

Re: Execute Hook unter Vista

  Alt 22. Feb 2009, 01:49
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 :/
  Mit Zitat antworten Zitat
hugo1990

Registriert seit: 27. Dez 2006
166 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Execute Hook unter Vista

  Alt 22. Feb 2009, 02:01
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.
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#8

Re: Execute Hook unter Vista

  Alt 22. Feb 2009, 13:20
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.
  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:24 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