![]() |
Fremden Befehlszeilenaufruf umbiegen?
Hallo, wie kann ich folgendes erreichen: Ein beliebiges anderes Programm ruft eine Befehlszeile (mit einem Parameter) auf, z.B.:
Zitat:
|
Re: Fremden Befehlszeilenaufruf umbiegen?
ich stehe auf der Leitung, wie wäre es mit OpenDialoge
|
Re: Fremden Befehlszeilenaufruf umbiegen?
Du musst den Befehl Shellexecute oder CreateProcess (und nahe Verwandte) hooken. Suche dazu mal uallCollection
|
Re: Fremden Befehlszeilenaufruf umbiegen?
Wenn ich Dich richtig verstanden habe, willst Du, wenn (z.B.) notepad aufgerufen wird, stattdessen Dein eigenes Programm starten? Dürfte man erfahren, was Du vorhast?
|
Re: Fremden Befehlszeilenaufruf umbiegen?
Mmh, ich habe selbst ein bisschen weitergedacht (zuerst dachte ich an so etwas wie ein Systemmomitoring-Hook), aber möglich wäre auch folgendes:
notepad.exe ersetzen durch ein eigenes Programm, das wiederum Notepad aufruft und den übergebenen Parameter an Notepad weitergibt. Nur dann, wenn eine definierte Bedingung erfüllt ist (ein bestimmter Parameter oder ein bestimmtes aufrufendes Programm), wird ein anderes definiertes Programm aufgerufen und diesem der Parameter übergeben. Nur: Wie kann mein Programm erkennen, von welchem Programm es aufgerufen wurde? |
Re: Fremden Befehlszeilenaufruf umbiegen?
Sorry, da bin ich überfragt, da müssen andere ran. :(
|
Re: Fremden Befehlszeilenaufruf umbiegen?
Wenn du weißt, dass nicht direkt Notepad aufgerufen wurde, sondern eine Textdatei geöffnet wird, könntest du auch die Dateinamenserweiterungen deinem Programm zuordnen.
|
Re: Fremden Befehlszeilenaufruf umbiegen?
Zitat:
|
Re: Fremden Befehlszeilenaufruf umbiegen?
Zitat:
|
Re: Fremden Befehlszeilenaufruf umbiegen?
Du könntest aber evtl. die Datei an sich überwachen (ShellNotify oder in der Art).
[edit] Nee, wohl Quatsch, ich glaube, das reine Öffnen löst noch kein Event aus. [/edit] |
Re: Fremden Befehlszeilenaufruf umbiegen?
1. Entweder du patchst das Programm und schreibst etwas anderes als NotePad rein (ist die suche nach der Nadel im Heuhaufen; aber unter Umständen kann man die Nadel einfach rufen und es geht recht fix)
2. Du hookst nur für diesen Process eben einen der Funktionen und biegst den Aufruf um, oder lässt dich einfach Benachrichtigen. Wie gesagt, Code dazu gibts in der uallcollection. Edit: du kannst evtl. recht einfach patchen, indem du die ImportTable der fremden Exe umbaust und dort eine Funktion deiner DLL einträgst. Und in dieser DLL kannst du dann separieren. Und die DLL muss nur im selben Verzeichnis oder unter system32 liegen. |
Re: Fremden Befehlszeilenaufruf umbiegen?
Vielen Dank für all die hilfreichen Tipps, ich glaube ich werde doch die einfachere Lösung favorisieren und notepad.exe ersetzen, um den tieferen Eingriff ins System mit einem Hook zu vermeiden.
Übrigens, wie war das nochmal mit Konsolenprogrammen, da gab es doch einen Schalter, damit das Konsolenfenster nicht angezeigt wird? |
Re: Fremden Befehlszeilenaufruf umbiegen?
Einen Execute-Hook zu schreiben ist eigentlich gar nicht so schwer. Dazu hab ich nicht die Uall-Collection gebraucht. Wenn du weißt wie man einen Hook schreibt geht es relativ schnell. Ich denke es ist besser, wenn man versteht wie dieser funktioniert...
Ich habe eine Link für ApiHooking: ![]() Ist zwar in C++, stellt aber kein Problem dar, da die meisten Befehle eh aus der Kernel32.dll stammen. Hab nur kleine Änderungen an der Funktionsweise vorgenommen. |
Re: Fremden Befehlszeilenaufruf umbiegen?
Zitat:
|
Re: Fremden Befehlszeilenaufruf umbiegen?
bist du dir sicher, dass du das willst? oder willst nicht eher, dass wenn jemand mit DClick oder mit der rechten maustaste sagt öffen (ggf. auch über shellexecute), dass dann dein progy die datei öffnet? in diesem fall, brauchst nur dein progy als standard eintragen und schon müsst es laufen.
|
Re: Fremden Befehlszeilenaufruf umbiegen?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:40 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 by Thomas Breitkreuz