Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Hook auslösen! (https://www.delphipraxis.net/14448-hook-ausloesen.html)

Assarbad 15. Feb 2004 09:55

Re: Hook auslösen!
 
Zitat:

Zitat von SleepyMaster
Aber irgendwie wäre es unlogisch, da dass WH ja für Window-Hook steht (oder nicht?).

Eben ;)

Zitat:

Zitat von SleepyMaster
Das wäre ja nicht das Problem

Oho, da biste aber ziemlich zuversichtlich. Viel Spaß beispielsweise mit der Kernel32.dll o.ä.

Eigentlich willst du doch bloß einen Prozeß im SYSTEM-Kontext ausführen, oder? Warum dann nicht einfach eine normale Methode verwenden? Es gibt immer die Rechte-Hürde, die du ohne Recht oder Exploit nicht überspringen kannst.

negaH 15. Feb 2004 10:44

Re: Hook auslösen!
 
Hooks können nur in Prozesse injeziert werden die über einen Messagequeue verfügen. Nachdem ein globaler Hook installiert wurde, wird er nicht sofort in alle Prozesse installiert. Man kann mit PostMessage(hWnd_Broadcast, wm_Null, 0, 0); nun erzwingen das jeder Messagequeue aktiv werden muß. D.h. man sollte obige PostMessage() nach dem Aufruf SetWindowsHookEx() durchführen damit alle betroffenen Prozesse die Hook-DLL laden und somit aktiv werden. Wird dies nicht gemacht kann es durchaus vorkommen das ein Prozess lange Zeit keienrlei Messages bearbeitet, und somit unsichtbar für den globalen Hook ist.

Allerdings, Hooken auf diesem Wege funktioniert nur mit Prozessen die einen Messagequeue besitzen, und Services.exe hat keinen Messagequeue. Dies stellt nämlich ein Sicherheitsrisiko dar.

Gruß Hagen

Assarbad 15. Feb 2004 15:47

Re: Hook auslösen!
 
@Hagen: Korrekt, bis auf die Tatsache, daß zumindest Kindprozesse von services.exe durchaus Messagequeues haben. Ich sage nur Norton oder McAfee AV-Produkte. Das wurde ja bei der Shatter Attack so vom Entdecker bemängelt.

negaH 15. Feb 2004 22:01

Re: Hook auslösen!
 
Kindprozesse eine Prozesses ohne Messagequeue sind nicht abhänig von Services.exe. D.h. es liegt in der Entscheidung des Entwicklers eines Dienstes ob er diesen mit oder ohne GUI codet. Man sollte natürlich Dienste immer ohne GUI entwickeln. Schon seltsam das AV Programme die Sicherheit ins System bringen sollen, solche anerkannt unsicheren Techniken benutzen.

Gruß Hagen

Assarbad 15. Feb 2004 23:44

Re: Hook auslösen!
 
Ja ja, das mit den Queues ist mir schon klar. Aber ich glaube mal, daß es hier nicht um die services.exe sondern um die Erlangung des SYSTEM-Kontext geht.

SleepyMaster 16. Feb 2004 14:27

Re: Hook auslösen!
 
Liste der Anhänge anzeigen (Anzahl: 1)
Nein! Ich will wie gesagt nur Code in ein Programm ohne Messagequeue injecieren. Muss auch nicht services.exe sein, halt nur ein Programm ohne Messagequeue. Mir geht es nicht um die Systemrechte.

Zitat:

Oho, da biste aber ziemlich zuversichtlich. Viel Spaß beispielsweise mit der Kernel32.dll o.ä.
siehe Anhang
(Ich weiß zwar die ganzen Parameter nicht, aber soweit ich weiß darf man nur nichts am Stack verändern [oder man kopiert ihn bevor man damit arbeitet+ hinterher wieder zurückkopieren], damit die übergebenen Werte auch dann richtig an die original DLL weitergegeben werden)

P.S.:Hat jemand villeicht ein bisschen Beispiel Code für API-Hooking???

Assarbad 16. Feb 2004 17:00

Re: Hook auslösen!
 
Soso ... und das schreibst du dann für jede einzelne Windows-Version. Wußte garnicht, daß Delphi sowas wie Naked beherrscht. Und selbst da müßtest du noch ne eigene Jumptable bauen. Abgesehen von der WFP die dir dann ins Vorhaben spuckt.

Such mal nach Bei Google suchenDetours

SleepyMaster 16. Feb 2004 18:06

Re: Hook auslösen!
 
Wenn man die DLL in Assembler schreibt, söllte man das Problem normal doch nicht haben oder???

Was ist WFP???

Zu DETOURS: Hab nur C++-Quellcodes gefunden, kann aber leider kein C/C++

Assarbad 16. Feb 2004 19:01

Re: Hook auslösen!
 
Zitat:

Zitat von SleepyMaster
Wenn man die DLL in Assembler schreibt, söllte man das Problem normal doch nicht haben oder???

Wenn man eine Jumptable zur echten kernel32.dll hinbekommt, die früh genug geladen wird.

Zitat:

Zitat von SleepyMaster
Was ist WFP???

Windows File Protection

Zitat:

Zitat von SleepyMaster
Zu DETOURS: Hab nur C++-Quellcodes gefunden, kann aber leider kein C/C++

Not my job. Es gibt auch Delphi-Beispiele zum Thema ... -> Google


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:19 Uhr.
Seite 3 von 3     123   

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