Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Programm in einer dll (https://www.delphipraxis.net/26863-programm-einer-dll.html)

endeffects 30. Jul 2004 12:47


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?

Bernhard Geyer 30. Jul 2004 12:58

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.

endeffects 30. Jul 2004 13:01

Re: Programm in einer dll
 
Zitat:

Dazu kannst Du deine DLL so registrieren, das es auch als "Plugin" für den Windows Explorer läuft
das klingt ja schonmal ganz gut, ich denke damit hätten man auch eine gewisse
abwärtskompatibilität im vergleich zur COM anwendung erreicht.

hast du dazu vielleicht ein beispiel oder ein stichwort wonach man suchen könnte?

Bernhard Geyer 30. Jul 2004 13:46

Re: Programm in einer dll
 
Einfach im Delphi-Demo-Verzeichnis ActiveX\ShellExt nachschauen.

endeffects 30. Jul 2004 13:59

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

endeffects 30. Jul 2004 16:26

Re: Programm in einer dll
 
Zitat:

davon mal abgesehn scheint keine der demos zu funktionieren
unter delphi 7 + winxp
oh mein fehler, ich hatte vergessen die dll über regsvr32 zu registrieren :wall:
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?

SirThornberry 30. Jul 2004 16:32

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.

endeffects 30. Jul 2004 16:47

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

endeffects 31. Jul 2004 01:51

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?

NicoDE 31. Jul 2004 02:19

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.
Seite 1 von 2  1 2      

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