Autor Beitrag
Philipp_Reitter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 430



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 430



BeitragVerfasst: 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



BeitragVerfasst: Fr 25.01.08 19:17 
Titel: Eine DLL kann ausführbare Programmteile enthalten
Sieht dann in etwa so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
library blabla;

uses {was die so alles braucht};

function blublu(var y:string):string;
begin
{hier sollte die Funktion irgendetwas machen}
end;

Exports blublu;

end.

Das war's schon.

Aufgerufen werden kann sie dann so:
ausblenden Delphi-Quelltext
1:
2:
function abc(var s:string): stringstdcallexternal 'blabla.dll' name 'blublu';
{nix weiter, die Funktion kann jetzt wie jede andere benutzt werden}

Ist nicht die einzige Möglichkeit, sollte für den Anfang jedoch ausreichen.

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
AHT
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 207



BeitragVerfasst: Fr 25.01.08 19:57 
user profile iconMartok 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 207



BeitragVerfasst: Fr 25.01.08 20:00 
user profile iconPhilipp_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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 25.01.08 22:01 
InDelphi geht genau das auch ...

ausblenden 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 :P

_________________
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 430



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Sa 26.01.08 14:18 
user profile iconAHT 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. :P
user profile iconPhilipp_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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 207



BeitragVerfasst: Sa 26.01.08 17:41 
user profile iconMartok 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.

user profile iconjaenicke 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 26.01.08 17:43 
user profile iconAHT hat folgendes geschrieben:
user profile iconjaenicke 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:
user profile iconPhilipp_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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 207



BeitragVerfasst: Sa 26.01.08 17:55 
user profile iconjaenicke 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".