![]() |
Hook auslösen!
Hi ihrs!
Kennt jemand ne lösung um ein Programm (das kein Fensterhandel hat) z.b.: services.exe dazu zubringen ein Hook-event von einem bereits laufenem Hook für IRGENDEINE Hook-Art auszulösen??? Als z.B.: services.exe dazu zu bringen einen Tastendruck/eine Mausbewegung zu simulieren oder was auch immer!
Delphi-Quellcode:
Vielen Dank schon mal!
{
WH_CALLWNDPROC WH_CALLWNDPROCRET WH_CBT WH_DEBUG WH_FOREGROUNDIDLE WH_GETMESSAGE WH_JOURNALPLAYBACK WH_JOURNALRECORD WH_KEYBOARD WH_KEYBOARD_LL WH_MOUSE WH_MOUSE_LL [NT] WH_MSGFILTER WH_SYSMSGFILTER WH_SHELL } |
Re: Hook auslösen!
Häh? Hook auslösen? Man kann Hooks nicht auslösen. Hooks sind (simplifiziert) Callbacks die vom System Rückmeldungen über bestimmte Ereignisse bekommen. Es bleibt also eigentlich nur mal wieder die Grundlagenfrage: Was willst du denn machen/erreichen?
|
Re: Hook auslösen!
Ich will einfach nur erreichen das ein Prozess einen von mir gestarteten Hook "auslöst".
Warum ich das machen will will ich hier nicht sagen ;) @Assarbad Du wirst schon wissen warum! |
Re: Hook auslösen!
Wie gesagt, Hooks arbeiten passiv, nicht aktiv. Da mußt du schon was anderes benutzen um Code in die services.exe zu injezieren. Wie wäre es mit einer DLL? Oder eben WriteProcessMemory() oder ne MMF.
|
Re: Hook auslösen!
Was bedeutet das sie aktiv und nicht passiv arbeiten?
Kannst du mir das bitte mal kurz erklären? :angle: |
Re: Hook auslösen!
Zitat:
|
Re: Hook auslösen!
Das ist wie die durchaus übliche Frage: "Wie kann ich einen Tastendruck mit einem Hook simulieren" -> GEHT NICHT
|
Re: Hook auslösen!
Sorry, aber die Nachricht muss auch nicht von dem Hook ausgelöst werden!
Wegen mir kann auch eine exe "Services.exe" dazu bringen einen Hook auszuführen! (und es ist auch egal welchen von den vielen) |
Re: Hook auslösen!
Ja, der Witz dran ist bloß, daß du offensichtlich was in die services.exe injezieren willst.
Außerdem werden Nachrichten schließlich auch von der services.exe nur empfangen und dein Hook bekommt ebenfalls ne Benachrichtigung. Damit wärst du schon in der services.exe. Leider hat die services.exe aber kein Fenster ... und die Hooks heißen nicht umsonst FENSTER-Hooks. Willst du also in der services.exe ein Fenster aufmachen, mußt du bereits Code injezieren. Aus diesem Grunde wäre der Hook wieder sinnlos, weil du dann ja wie gesagt schon Code injeziert hättest. |
Re: Hook auslösen!
Zitat:
(Wobei services.exe aber trozdem das wohl mit perfekteste Ziel wäre) Nur wenn alle Hookarten auf Fentsermessages basieren, dann kann ich es so leider vergessen! Vielen Dank trozdem |
Re: Hook auslösen!
Was willst du denn exakt machen? Code in services.exe injezieren oder an SYSTEM-Rechte kommen?
|
Re: Hook auslösen!
schau dir mal
Delphi-Quellcode:
vielleicht hilft dir das ja weiter
AllocateHWnd
|
Re: Hook auslösen!
Oh, ne neue Funktion, wo ist die Dokumentation dazu? Ist das eine VCL-Methode?
Nachteil, der Code muß dennoch VORHER in die services.exe! Grade um dort reinzukommen will er aber den Hook. Also beißt sich die Schlange selbst in den Schwanz ;) |
Re: Hook auslösen!
keine ahnung ob vcl, ist in der unit classes und in der hilfe steht unter anderem dazu
Delphi-Quellcode:
also siehts eher nach non-vcl aus..
Call AllocateHWnd to create a window that is not associated with a windowed control. Typically, this method is used to create non-visual windows that respond to messages but that do not appear in the user interface. For example, the TTimer component uses this method to create a window that responds to timer messages from Windows.
Und die dll in die services.exe zu bekommen dürfte doch ni das problem sein, oda??? |
Re: Hook auslösen!
Ich will Code in die services.exe injezieren.
(An Systemrechte kommt man auch einfacher ran) |
Re: Hook auslösen!
@SirThornberry
Zitat:
|
Re: Hook auslösen!
Das hatten wir doch schon, man kann keinen Hook auslösen. Ein Hook wird vom System aufgerufen um ein Ereignis zu signalisieren. Der Hook kann maximal das Ereignis unterdrücken indem er es nicht weiterreicht. Aber erzeugen kann er kein Ereignis!
Es gibt verschiedene API-Hooking-Technologien. Da aber die services.exe zur TCB gehört, wirst du von mir kein Rezept dafür bekommen. Such halt nach APIHooks von EliCZ oder auf Microsofts-Reserch Seite, Titel fällt mir grad nicht ein. |
Re: Hook auslösen!
Zitat:
Delphi-Quellcode:
verwende???
Keybd_event(Byte('M'), 0, 0, 0);
Keybd_event(Byte('M'), 0, KEYEVENTF_KEYUP, 0); Der Hook (Tastaturhoom) wird dann von dem Prozess, der zu dem das Fenster gehört, dass im Vordergrund liegt "ausgelöst" (Das Fenster erhält ja auch die Tastatureingabe). Zu den API Hooks: blicke da nicht ganz durch, ABER prinzipiell müssen die ganzen API-Funktionen ja auch in einer dll stehen. Kann man die nicht durch eine selbstgeschriebene austauschen, die dann erst meinen Code ausführt und dann den der Original Function in der original DLL??? (So ähnlich wie wenn man nur einen Teil der MS-Gina neuschreiben will) Funktionieren die so??? Wenn nein: Wie dann??? Kleine Nebenfrage: Was ist TCB |
Re: Hook auslösen!
Zitat:
Zitat:
Zitat:
|
Re: Hook auslösen!
Ich dachte, nur dass villeicht eine andere Hookart auch ohne Fenster "ausgelöst" werden kann.
Code:
Aber irgendwie wäre es unlogisch, da dass WH ja für Window-Hook steht (oder nicht?).
WH_CALLWNDPROC
WH_CALLWNDPROCRET WH_CBT WH_DEBUG WH_FOREGROUNDIDLE WH_GETMESSAGE WH_JOURNALPLAYBACK WH_JOURNALRECORD WH_KEYBOARD WH_KEYBOARD_LL WH_MOUSE WH_MOUSE_LL [NT] WH_MSGFILTER WH_SYSMSGFILTER WH_SHELL Zitat:
Ich werde mal ein bisschen weiterprobieren. Bis dahin: Vielen Dank |
Re: Hook auslösen!
Zitat:
Zitat:
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. |
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 |
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.
|
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 |
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.
|
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:
(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??? |
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 ![]() |
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++ |
Re: Hook auslösen!
Zitat:
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:08 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