![]() |
Programm in einer dll
hallo,
ich hatte in den letzten Tagen einige Probleme mit einem Browser-Hijacker der eine dll auf mein System geschleust hat und hier (unabhängig von einem geöffneten Browser) immer mal wieder Werbung eingeblendet hat. Nach allem was ich von diesem Programm weiß wurde es über regsvr32 in meinem Windows registriert und lief seitdem 'unerkannt' im Hintergrund. Da ich derart ausführbare dll's ganze gerne einmal mit Delphi nachvollziehen möchte würde mich dazu einmal folgendes interessieren. Dll's selbst enthalten ja normalerweise nur Code der von einem Prozess/Thread geladen und ausgeführt wird. Wenn ich eine eigene Dll nun über 'regsvr32 /i /s programm.dll' im System registriere wird diese doch nicht automatisch ausführbar sondern stellt nur eine Bibliotek mit Methoden zur Verfügung. Hat Jemand vielleicht eine Idee wie man diese Dll als 'Anwendung' laufen läßt? |
Re: Programm in einer dll
Dazu kannst Du deine DLL so registrieren, das es auch als "Plugin" für den Windows Explorer läuft (wie andere Programm auch machen um z.B. Menüpunkte in das Kontextmenu des Windows Explorer zu bekommen). Und da der Windows Explorer immer läuft (Desktop ist ja auch 'ne Windows Explorer Instanz) läuft deine DLL immer mit.
Oder (bei neuen Windows-Versionen) eine COM+Anwendung erstellen und so konfigurieren das mindestens eine Instanz läuft. |
Re: Programm in einer dll
Zitat:
abwärtskompatibilität im vergleich zur COM anwendung erreicht. hast du dazu vielleicht ein beispiel oder ein stichwort wonach man suchen könnte? |
Re: Programm in einer dll
Einfach im Delphi-Demo-Verzeichnis ActiveX\ShellExt nachschauen.
|
Re: Programm in einer dll
oh danke für die hilfe,
meine suche mit google war bisher wenig erfolgreich, leider sind die demos von delphi dazu sehr umfangreich und schlecht kommentiert, ich hab gehofft ich finde irgendwo eine kleine "hello world" demo einer dll die man manuell auf den explorer registriert :( davon mal abgesehn scheint keine der demos zu funktionieren unter delphi 7 + winxp |
Re: Programm in einer dll
Zitat:
trotz allem hab ich den aufbau der dll nicht so ganz verstanden, ist es überhaupt möglich mit hilfe einer solchen dll einen timer mit windows zu starten der dann nach einer zeit x z.b. eine messagebox ausgibt? |
Re: Programm in einer dll
naja, eine variante wäre auch noch die dll über rundll32.exe zu starten. In deiner Dll kannst du dann einen Hook starten und danach kann sich die Hookinjezierende Dll die mit rundll32 ausgeführt wurde ja wieder beenden und der hook läuft weiter im hintergrund.
|
Re: Programm in einer dll
über die variante mit rundll32 hab ich auch schon nachgedacht,
allerdings denke ich das die dll als explorer plugin evtl die bessere lösung wäre, nur bin ich durch die beispiele aus den demos leicht verwirrt, da es hier vornehmlich darum geht ein kontextmenü hinzuzufügen das dann auf eingaben mit der entsprechenden methode reagiert grundsätzlich also genau das was eine programm bibliotek tun soll, darum kann ich auch nicht nachvollziehn ob die dll ein eigenleben, z.b. über einen timer ohne vorherige eingabe haben kann |
Re: Programm in einer dll
ich hab mich nun ne ganze weile durchs web gewühlt
und leider noch immer nichts brauchbares gefunden, hat niemand eine brauchbare idee? |
Re: Programm in einer dll
Die einfachste Methode ist eine DLL in den Shell- oder 'Kernel'-Prozeß zu injezieren.
Such mal im Forum nach CreateRemoteThread. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 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