Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Betriebssysteme (https://www.delphipraxis.net/27-betriebssysteme/)
-   -   Meine DLL tötet Windows o.O (https://www.delphipraxis.net/88774-meine-dll-toetet-windows-o-o.html)

Neutral General 20. Mär 2007 20:02


Meine DLL tötet Windows o.O
 
Hi,

Hab ne ganz harmlose DLL geschrieben... Hab unter HKLM->Software->Microsoft->WindowsNT->CurrentVersion->Windows
in den Wert "AppInit_DLLs" meine DLL mit eingetragen.. (wie trennt man DLLs ab wenn man mehrere hat?) und Windows neu gestartet um zu testen ob meine DLL mitgestartet wird...

Und auf einmal schüttet mich Windows nach dem Willkommensbildschirm mit Fehlermeldungen und AV's und weiß der Teufel was zu und läd einfach nicht mehr weiter... Er lässts einfach sein.. Das sieht man besonders im abgesicherten Modus (Ja sogar da werden die DLL's geladen o.O) Ganz am Anfang habe ich den Task-Manager aufgerufen und irgendwann hat Windows ab einem Zeitpunkt einfach aufgehört weiterzuladen... Alles is stehn geblieben.. Das Startmenu War fast leer... Man konnte nur auf Start->Alle Programme klicken.. und da klappte nix mehr auf.. Nicht weil der PC hängt sondern weil die Submenus anscheinend gar nicht erstellt worden sind... Der Taskmanager bestand auch nur aus einem Fenster, einem Menu und einem leeren Panel. Windows hat einfach aufgehört an dem Punkt...Als wär die Zeit stehn geblieben.. :shock:

Hab dann letztendlich mit der WinXP-CD und der Rettungsconsole meine DLL löschen können...

Jetzt hab ich Angst das wieder zu testen... Wie macht man das richtig? Bzw was hab ich falsch gemacht vielleicht? Ist das schlimm das ich nen Thread in meiner DLL hab? Wie trag ich meine DLL richtig in die Registry ein? Gibts andere Möglichkeiten DLLs beim Windowsstart mitzuladen?

Gruß
Neutral General

Bernhard Geyer 20. Mär 2007 20:08

Re: Meine DLL tötet Windows o.O
 
Was soll den diese DLL machen? Reicht es denn nicht aus wenn du einen Dienst schreibst der automatisch gestartet wird?

Ansonsten kann ich dir fürs Testen VMWare ans herz legen. Wenn das Windows zerschossen ist einfach auf alten Sicherungspunkt zurück oder Image neu kopieren.

Neutral General 20. Mär 2007 20:10

Re: Meine DLL tötet Windows o.O
 
Die DLL soll jede Sekunde oder so gucken ob gewisse Programme gestartet sind und die gegebenenfalls beenden...
(Sinn davon ist egal)

Mein Windows klappt wieder... Habs wieder hinbekommen...

Christian Seehase 20. Mär 2007 21:10

Re: Meine DLL tötet Windows o.O
 
Moin Michael,

so etwas testet man am Besten auch in einer virtuellen Maschine...
Eine DLL die in APPInit_DLLs steht wird zu jedem Prozess dazugeladen.

Catbytes 20. Mär 2007 22:09

Re: Meine DLL tötet Windows o.O
 
Zitat:

Zitat von Neutral General
...Wie macht man das richtig?...

Hi,

nimm VirtualBox.

Gut, frei und läuft mit fast allem (auch z.B. Windows Vista).

Luckie 20. Mär 2007 22:27

Re: Meine DLL tötet Windows o.O
 
Zitat:

Zitat von Neutral General
Bzw was hab ich falsch gemacht vielleicht?

Ohne Code kann man da wohl nur raten.

alzaimar 21. Mär 2007 07:12

Re: Meine DLL tötet Windows o.O
 
Ich hab dafür keine DLL, sondern eine EXE, die im Tray hängt. Die kann ich in meinen Autostart-Ordner packen, oder es sein lassen. Wozu eine DLL?

StefanG 21. Mär 2007 08:36

Re: Meine DLL tötet Windows o.O
 
Evtl rufst du irgendwelche Funktionen auf, die aus DLL's kommen, die in den Zielprozessen nicht importiert wurden?

Services mögen es z.b. garnicht, wenn man GUI Funktionen wie ShowMessage benutzt.

Neutral General 21. Mär 2007 12:40

Re: Meine DLL tötet Windows o.O
 
*HUUUUUUUUUST* ...

Wisst ihr was ich NIE WIEDER vergessen/vernachlässigen werde? Wenn eine DLL von X Prozessen geladen wird und jede Instanz der DLL 10 mal in der Sekunde alle Prozesse auflistet und dabei weder die SuchHandles noch die Handles von OpenProcess schließt dann kanns schonmal sein das der Taskmanager 30 Sekunden nach Systemstart eine 1,2GB große Auslagerungsdatei anzeigt.. Tendenz: STARK wachsend... :wall: :mrgreen:

Hätte euch gerne davon ein Screenshot gezeigt aber Paint war bei einer auf 1,5-1,7GB angewachsenden Auslagerungsdatei nichtmehr in der Lage irgendwas zu speichern oder sonstwas zu tun :mrgreen:

:oops: :mrgreen:

EDIT: Wobei mir grad auffällt... Wie schließt man die SuchHandles ? o.O
Process32Close gibts nicht...

Gruß
Neutral General

alzaimar 21. Mär 2007 12:45

Re: Meine DLL tötet Windows o.O
 
Was Du auch nicht vergessen/vernachlässigen solltest, ist...

... das Zeugs zu testen.

Aber wer macht das schon. Testen ist eh nur was für Spießer. :mrgreen:

Ach, und 'CloseHandle' ist dein Freund.

brechi 21. Mär 2007 12:46

Re: Meine DLL tötet Windows o.O
 
Wie jedes andere handle auch: CloseHandle

Neutral General 21. Mär 2007 12:55

Re: Meine DLL tötet Windows o.O
 
Hi,

Ok also das Speicher-Problem hab ich im Griff... Nur ich bekomme trotzdem AV's beim Start und wenn ich manche Anwendungen starte...

Was mach ich da am besten?

Zacherl 21. Mär 2007 13:00

Re: Meine DLL tötet Windows o.O
 
Wenn du die DLL sowieso von jedem Prozess laden lässt kannst du auch einfach TerminateProcess hooken .. und dann dein Programm neu starten. Ist wohl ressourcenschonender.

Neutral General 21. Mär 2007 13:01

Re: Meine DLL tötet Windows o.O
 
Es muss eigentlich gar nicht von allen gestartet werden. Wenn eine einzige Anwendung meine DLL laden würde, würde das vollkommen reichen....

gsh 21. Mär 2007 13:08

Re: Meine DLL tötet Windows o.O
 
Zitat:

Zitat von Neutral General
Es muss eigentlich gar nicht von allen gestartet werden. Wenn eine einzige Anwendung meine DLL laden würde, würde das vollkommen reichen....

ja dann machs doch einfach so des du einen Run Wert (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Cur rentVersion\Run) in die registry hinzufügst. die Bei Google suchenrundll32.exe ist dein freund
diese exe ist imho nur dafür da eine Dll zu laden.

Neutral General 21. Mär 2007 13:39

Re: Meine DLL tötet Windows o.O
 
Ok danke.. Ich habe aber Probleme beim zweiten Parameter von RunDLL32.exe... Da wird ein EntryPoint verlangt... Damit bin ich ein bisschen überfordert, dh ich weiß nicht was ich hinschreiben soll...

EDIT: Ach ja wie kann man ne mit Rundll32.exe geladene DLL wieder entladen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz