![]() |
Execute Hook
Guten Morgen,
ich hoffe ich schreibe hier ins richtige Forum. Falls nicht, bitte verschieben. Es geht mir um einen execute Hook. Und zwar um einen bestimmten. Gefunden habe ich ein Beispiel heir: ![]() Dies gucke ich mir auch schon seit ca. einer Woche an. Was ich da sehe gefällt mir, das sind schöne Möglichkeiten. Ein Problem habe ich allerdings. In dem Beispiel wird, wenn man ein Programm öffnet, ein kleines Abfragefenster als popup geöffnet. Dies zeigt den Namen/Pfad der Anwendung an, die versucht sich zu öffnen und fragt ob man das wirklich zulassen will. Soweit so gut. Ich habe mir jetzt eine kleine Funktion geschrieben die diesen Teil abändern soll. Diese Funktion ( if isOnWhitList(string) = '1' then ) öffnet eine Datei und guckt ob in dieser das Programm gelistet ist, welches starten will. Falls ja, gibt es eben '1' zurück. Das Problem ist jetzt, das mir dabei der explorer abstürzt und ich einfach den Grund dafür nicht finde. Ich habe erst vermutet das es irgendwie am Zugriff auf die Datei liegt, in der ich die erlaubten Programme festlege. Dann ist mir aber aufgefallen das, wenn der explorer nicht im Hintergrund läuft, der Hook einwandfrei funktioniert, wie ich es gern hätte. Woran kann das liegen? Ich bräuchte halt den explorer weiterhin im Hintergrund. Hoffe das mir hier jemand helfen kann. Gruß, Andreas |
Re: Execute Hook
Liste der Anhänge anzeigen (Anzahl: 1)
hallo,
ich hab mit den gleichen hook mal angeschaut, siehe anhang. Aber ich begreif ihn nicht :( Wo wird da festgestellt, welche anwendung gestartet wird? Und ob sie "notpad" ist ? MfG - Ghost007 |
Re: Execute Hook
Ich vermute mal es wird CreateProcess, ShellExecute und WinExec gehookt. Vielleicht nocht NtCreateProcess .. all dieses APIs besitzen einen Parameter der die Befehlszeile übergibt.
Daraus kannst du den Dateinamen ermitteln .. |
Re: Execute Hook
öhm, ok und weiter? könntest du dich vll etwas auf das beispiel aus dem anhang beziehen?
danke MfG - Ghost007 |
Re: Execute Hook
In der HookUnit.pas:
Delphi-Quellcode:
Alle Funktionen, deren Namen dort mit "New" anfangen, sind die, die anstelle der "richtigen" Funktionen aufgerufen werden. Und da sind ja die Argumente bei, z.B. FileName und Directory.. :wink:
function NewShellExecute(hWnd: HWND; Operation, FileName, Parameters, Directory: PChar; ShowCmd: Integer): HINST; stdcall;
begin Result := 0; if Windows.MessageBox(0, PChar('Soll ' + Directory + FileName + ' ausgeführt werden?'), '[ShellExecute Hooked]', MB_OKCANCEL) = IDOK then Result := OldShellExecute(hwnd, Operation, FileName, Parameters, Directory, ShowCmd); end; |
Re: Execute Hook
ah,
ok. danke :) werd mir des mal anschaun. MfG - Ghost007 |
Re: Execute Hook
du hattest recht :)
noch ne kleine frage, hab hier im forum schonmal gesucht, aber leider nichts gefunden. Gibts auch sowas wie nen close/terminate hook? MfG - Ghost007 |
Re: Execute Hook
*PUSH*
|
Re: Execute Hook
Klar, du Hookst "einfach" Terminate Process
mfG Markus PS: Ich kämpfe gerade mit der selben Materie |
Re: Execute Hook
Zitat:
Hi, hab mich nach langer zeit mal wieder hingesetzt und den execute hook für meine bedürfnisse perfektioniert :) Jetzt ist aber wieder die frage nach einem terminate hook aufgetaucht. Ich habs auch schon versucht indem ich den execute hook mit terminate "nachbau" ... aber ich hab, denk ich, schlicht zu wenig ahnung von dem terminate befehl ... bist du evtl schon weiter gekommen? oder hat irgend jmd ne idee? MfG - Ghost007 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:12 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