Autor |
Beitrag |
Philipp_Reitter
      
Beiträge: 430
|
Verfasst: Di 22.01.08 10:21
Hi...
kann ich irgenddie eine Dll ausführen....
d.h. dass z.b. ein Dll Loader die dll started und die dann im hintergrund wie ein normales Programm läuft nur ohne form halt...
Mfg
Philipp
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Do 24.01.08 17:52
Ähem. Eine DLL stellt Funktionen bereit, die dann jemand anders aufrufen kann. 'Laufen' kann die DLL selber gar nicht...
Eventuell suchst du ja RUNDLL.exe...?
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Philipp_Reitter 
      
Beiträge: 430
|
Verfasst: Fr 25.01.08 18:11
naja aber die dll hat doch ne (in C++ DLLMain) in delphi einfach nur das leere begin - end.... da könnt ich doch was drinnen laufen lassen oder was dann z.b. nen thread started oder irgendwas verarbeited ne datei aufmacht oder so aber wenn ich z.b. ne schleife habe die unendlich dauert läuft die dll dann auch immer oder wie?!
weil im security task manager sehe ich dass im hinterdrund dll's laufen... was is dann das?
|
|
GPVG
Hält's aus hier
Beiträge: 6
|
Verfasst: Fr 25.01.08 19:17
Titel: Eine DLL kann ausführbare Programmteile enthalten
Sieht dann in etwa so aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| library blabla;
uses ;
function blublu(var y:string):string; begin
end;
Exports blublu;
end. |
Das war's schon.
Aufgerufen werden kann sie dann so:
Delphi-Quelltext 1: 2:
| function abc(var s:string): string; stdcall; external 'blabla.dll' name 'blublu'; |
Ist nicht die einzige Möglichkeit, sollte für den Anfang jedoch ausreichen.
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
AHT
      
Beiträge: 207
|
Verfasst: Fr 25.01.08 19:57
Martok hat folgendes geschrieben: | 'Laufen' kann die DLL selber gar nicht...
Eventuell suchst du ja RUNDLL.exe...? |
Hallo Martok...
Da irrst du dich ganz gewaltig - es hängt da von der Technik ab.
Habe sogar schon in CSRSS.EXE selbständig läufende DLLs injiziert, die quasi in diesem Servide einen eigenen Thread am laufen hielten. Bei Bedarf liefere ich gerne eine Programm, was genau das tut.
Gruß
AHT
|
|
AHT
      
Beiträge: 207
|
Verfasst: Fr 25.01.08 20:00
Philipp_Reitter hat folgendes geschrieben: | naja aber die dll hat doch ne (in C++ DLLMain) in delphi einfach nur das leere begin - end.... da könnt ich doch was drinnen laufen lassen oder was dann z.b. nen thread started oder irgendwas verarbeited ne datei aufmacht oder so ...?!
weil im security task manager sehe ich dass im hinterdrund dll's laufen... was is dann das? |
Da kann man nur sagen . BINGO! Wie gesagt, auf die Technik kommt es an. Etwas nachdenken und APIs büffeln, dann hast du die Lösung.
Gruß
AHT
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Fr 25.01.08 22:01
InDelphi geht genau das auch ...
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| library RunMe;
uses Forms, Dialogs;
begin MessageDlg('Hello World!', mrInformation, [mbOK], 0); end. |
Dann die DLL noch mit LoadLibrary laden und freuen, dass eine Meldung kommt ...
Lesen der Delphi-Hilfe soll helfen ... - manchmal 
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Philipp_Reitter 
      
Beiträge: 430
|
Verfasst: Sa 26.01.08 13:49
d.h. ich brauche ein programm was die dll einmal started...?
kann sich dass dann schließen ohne dass die dll geschlossen wird?
|
|
Chryzler
      
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: Sa 26.01.08 14:18
AHT hat folgendes geschrieben: | Da irrst du dich ganz gewaltig - es hängt da von der Technik ab.
Habe sogar schon in CSRSS.EXE selbständig läufende DLLs injiziert, die quasi in diesem Servide einen eigenen Thread am laufen hielten. Bei Bedarf liefere ich gerne eine Programm, was genau das tut. |
Jo, wäre mal interessant zu sehen. Ist aber nur hilfreich wenn es in Delphi geschrieben ist und ich den Source haben kann.
Philipp_Reitter hat folgendes geschrieben: | d.h. ich brauche ein programm was die dll einmal started...?
kann sich dass dann schließen ohne dass die dll geschlossen wird? |
Kommt darauf an, wo die DLL gestartet wird. Wenn sie in einen anderen Prozess injiziert wird, dann muss der andere Prozess weiterlaufen.
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Sa 26.01.08 15:14
Naja gut. An DLLMain hab ich grade nicht gedacht. Aber selbst dann muss irgendwer die DLL laden und am leben halten.
Du kannst natürlich auch eine normale Exe erzeugen, in DLL umbennen und starten...
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 26.01.08 16:34
Ich frage mich eigentlich eher was das für einen Sinn hat. Was hat eine derart laufende DLL denn für einen Vorteil gegenüber einem normalen Delphiprogramm ohne Formular?
Ich sehe da im Moment keinen einzigen Vorteil.
|
|
AHT
      
Beiträge: 207
|
Verfasst: Sa 26.01.08 17:41
Martok hat folgendes geschrieben: | Naja gut. An DLLMain hab ich grade nicht gedacht. Aber selbst dann muss irgendwer die DLL laden und am leben halten.
|
Nichts leichter als das. Das was die DLL "am Leben erhält", muss in die DLLMain der injizierten DLL. Funktioniert auf jedem Windows Betriebssystem.
jaenicke hat folgendes geschrieben: | Ich frage mich eigentlich eher was das für einen Sinn hat. Was hat eine derart laufende DLL denn für einen Vorteil gegenüber einem normalen Delphiprogramm ohne Formular? |
Na ja, da gibt es einige Vorteile - kleines Beispiel: Versuche doch mal eine in CSRSS injizierte DLL die selbständig laufend eigenen Code ausführt über den Taskmanager zu beenden...
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 26.01.08 17:43
AHT hat folgendes geschrieben: | jaenicke hat folgendes geschrieben: | Ich frage mich eigentlich eher was das für einen Sinn hat. Was hat eine derart laufende DLL denn für einen Vorteil gegenüber einem normalen Delphiprogramm ohne Formular? |
Na ja, da gibt es einige Vorteile - kleines Beispiel: Versuche doch mal eine in CSRSS injizierte DLL die selbständig laufend eigenen Code ausführt über den Taskmanager zu beenden... |
Ich meinte das im Hinblick darauf: Philipp_Reitter hat folgendes geschrieben: | kann ich irgenddie eine Dll ausführen....
d.h. dass z.b. ein Dll Loader die dll started und die dann im hintergrund wie ein normales Programm läuft nur ohne form halt... |
Das hörte sich nicht so an, als ob es um soetwas ginge.
|
|
AHT
      
Beiträge: 207
|
Verfasst: Sa 26.01.08 17:55
jaenicke hat folgendes geschrieben: | Das hörte sich nicht so an, als ob es um soetwas ginge. |
Lies dir mal seinen zweiten Thread durch. Es kann sehr gut sein, dass ich ihn hier falsch verstanden habe - für mich scheint es ihm bei beiden Sachen um die Erweiterung eines fremden Programmes um eigene Funktionen zu gehen.
Ein "Loader" Programm schießt eine DLL in den Speicherbereich irgendeines Prozesses, die dann selbständig ohne den Loader laufend Code ausführen soll.
Ob der Loader die DLL in den eigenen Prozess schießt oder nicht, ist erst einmal egal. Es ging ihm hier wohl um das "selbständige Laufen".
|
|