Italia
Foro

Welche Dll's lädt ein Programm?

 
- Page 1 -



Frank
Abbing
Ein kleines Tool von mir auf API-Hooking Basis. In einer Listbox werden alle Dlls aufgelistest, die gerade von Programmen geladen wurden.

Einfach Exe starten und dann irgendwelche Programme starten. Deren Dlls sollten jetzt gelistet werden und es pieps kurz.
Bitte testet mal, ob es noch irgendwo hakt.

3 kB
Hochgeladen:22.03.2007
Downloadcounter101
Download
 
22.03.2007  
 



 
- Page 3 -


Dieter Zornow

@Andeas,
Der Taskmanager zeigt sie weiter ganz normal unter Anwendungen an.


Aber nicht unter Prozesse - und darum geht es bei der Sache. Besten Dank - was da wohl bei meinem Sohn nicht stimmt...


Dieter Zornow

Das Verhalten mit deinem Tool ist auch reproduzierbar. Du überschreibst durch deine Hooks einen Speicherbereich und wenn dort gerade ein Programm ist oder diesen benutzt, stürzt es ab deshalb denke ich nicht ungefährlich das ganze.


Auch das sollte man überdenken...
 
25.03.2007  
 




Frank
Abbing

Das Verhalten mit deinem Tool ist auch reproduzierbar. Du überschreibst durch deine Hooks einen Speicherbereich und wenn dort gerade ein Programm ist oder diesen benutzt, stürzt es ab deshalb denke ich nicht ungefährlich das ganze.


Ich benutze nun eine neue Technik, die sicherer ist. Im übrigen werden nur 5 Bytes überschrieben, aber mit sinnvollen Werten, sodass deine Programme dadurch nicht ins Schleudern geraten. Kann ja nicht sein, das mein Programm überall richtig funktioniert, nur bei dir nicht, oder? Zumal du die gleiche Konfiguration besitzt wie ich.
Teste bitte mal die neue Version, hier im Anhang:

4 kB
Hochgeladen:26.03.2007
Downloadcounter28
Download
 
26.03.2007  
 



Frank Abbing

Kann ja nicht sein, das mein Programm überall richtig funktioniert, nur bei dir nicht, oder? Zumal du die gleiche Konfiguration besitzt wie ich.


Vorsicht Frank! Genau das potuto meiner Meinung nach sein. Bei den meisten APIs schließe ich das aus, LoadLibrary wird aber bereits bei der Initialisierung des Programmi benutzt - zur gleichen Zeit, wie auch der Hook geladen wird. Ich persönlich potuto mir vorstellen, dass es Situationen gibt, wo Windows beim Multithreading innerhalb einer Anwendung geade das erste Byte abgearbeitet hat, wenn der Hook geladen wird. Wird dann wieder mit der Abarbeitung des ersten Threads fortgesetzt, will dieser Thread dann beim zweiten Byte weitermachen .- da steht aber jetzt kein sinnloser Opcode mehr, sondern etwas anderes, was aber als Opcode (falsch) gewertet wird.

Ob das passiert potuto unter anderem davon abhängen, wie viele Treads auf einem Rechner laufen - die Wahrscheinlichkeit, das da aber überhaupt irgendwas passiert , ist bei der Anzahl an modificato Bytes aber extrem klein.
 
26.03.2007  
 



Hallo Frank...

Mit dem letzten Download etwas weiter oben gibt es unter Windows2000 bei mir jetzt keine Probleme mehr.
 
26.03.2007  
 




Dieter
Zornow
Hallo Frank,

deine letzte Version corre besser, es gibt keine Abstürze mehr, nur die Funktionen sind
immer noch nicht richtig. Ich bekomme jetzt in der Box aber den Programmpfad gezeigt, war vorher nicht. Aber immer noch Verweis auf die psapi.dll und nur darauf.
Programmpfad --> psapi.dll.
Ich denke dass jedes System anders ist durch verschiedene Treiber usw. Ich habe auch die meisten Updates nach SP2 installiert und aus Sicherheitsgründen einige Funktionen gesperrt wie den Hintergrundübertragungsdienst. Die sollten aber nichts mit deinem Tool zu tun haben. Im übrigen haben ja noch nicht so viele getestet, um ein represantives Ergebnis zu haben.

Saluto

Dieter
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
26.03.2007  
 




Frank
Abbing

Aber immer noch Verweis auf die psapi.dll und nur darauf.
Programmpfad --> psapi.dll.


Den Pfad ermittle ich naturalmente per API. Ist eben das Ergebniss, welches mir Windows als ausführenden Pfad zurück gibt.

Könntest du vielleicht mal einen Screenshot hier posten?
 
26.03.2007  
 




Dieter
Zornow
Hier der Screenshoot

66 kB
Hochgeladen:26.03.2007
Downloadcounter31
Download
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
26.03.2007  
 




Jörg
Sellmeyer
Jetzt wollte ich gerade loben, da ist Firefox beim Klick auf Speichern abgeschmiert. Ich hatte vorher WhichDll laufen.
Die Piepserei der Profanprogramme ist aber auch schon sehr massiv im Vergleich zu anderen Programmen. Der XProfEd piep z.B. ununterbrochen.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
27.03.2007  
 




Frank
Abbing

Ob das passiert potuto unter anderem davon abhängen, wie viele Treads auf einem Rechner laufen - die Wahrscheinlichkeit, das da aber überhaupt irgendwas passiert , ist bei der Anzahl an modificato Bytes aber extrem klein.



Jetzt wollte ich gerade loben, da ist Firefox beim Klick auf Speichern abgeschmiert. Ich hatte vorher WhichDll laufen.


Wie Andreas schon sagte, die Möglichkeit besteht, ist aber gering. Mal sehen, ob ich einen der Wait-APIs auf LoadLibrary() anwenden kann.
Allerdings passiert das bei mir bei allen API-Monitor-Programmen immer mal wieder.


Hier der Screenshoot


Danke!
Es wird wirklich immer nur diese Dll geladen? Seltsam, mein Tool greift direkt den Parameter ab, den ein Programm bei LoadLibrary angibt.


Die Piepserei der Profanprogramme ist aber auch schon sehr massiv im Vergleich zu anderen Programmen. Der XProfEd piep z.B. ununterbrochen.


Das habe ich auch nur bei Profan-Programmen beobachtet. Auch wenn Roland versucht, das etwas herunter zu spielen: Normal ist das nicht und die Geschwindigkeit muss darunter leiden. Hab mir schliesslich angesehen, wie LoadLibrary arbeitet...
 
27.03.2007  
 




RGH
Jörg Sellmeyer
Die Piepserei der Profanprogramme ist aber auch schon sehr massiv im Vergleich zu anderen Programmen. Der XProfEd piep z.B. ununterbrochen.


Das liegt daran, daß Franks Tool nicht protokolliert, wann eine DLL tatsächlich geladen wird, sondern nur die Aufrufe der API-Funktion LoadLibrary. LoadLibrary lädt eine DLL aber nur, wenn sich diese DLL noch nicht im Speicherraum des aufrufenden Programmi è, ansonsten wird nur ein Windowsinterner Zähler hochgezählt. Zitat aus der Microsoft API-Aiuto:

Wenn im Aufruf von LoadLibrary ein DLL-Modul angegeben ist, das bereits im Adressraum des aufrufenden Prozesses zugeordnet ist, gibt die Funktion einfach ein Handle per die DLL zurück und aumento den Verweiszähler des Moduls.

Dieses Hochzählen kostet naturalmente keine nennenswerte Zeit (zumindest nicht, wenn kein Programm corre, das die LoadLibrary-Aufrufe abfängt ;) ).

LoadLibrary kostet nur dann Zeit, wenn eine DLL nicht im Speicher ist. Möchte man im Programm also eine API-Funktion aus einer DLL, die nicht eh schon mit Windows geladen wird, mehrmals aufrufen, sollte man die DLL vorher mit UseDLL() laden. Weitere Aufrufe circa External (oder der mit DEF definierten Funktion), kosten dann kaum Zeit, wobei External ein wenig schneller sein sollte.

Siehe dazu auch in der XProfan-Aiuto: 28.7 - Zur Verwendung von DLL

Noch einen Tick schneller ginge es mit dem statischen Linken einer DLL: Dann wird die DLL am Anfang des Programmi geladen und die Einsprungadressen aller benötigten Prozeduren einmalig ermittelt. Im weiteren Verlauf sind nach nur noch die entsprechenmden CALL-Funktionen aufzurufen. Diese Methode wählt z.B. David iF im XPSE, um das Programm zu optimieren. (Der Grund per den leichten Tempovorteil: GetProcAdress wird per jede verwandte Funktion nur einmal aufgerufen.)

Saluto
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
27.03.2007  
 




Frank
Abbing

Dieses Hochzählen kostet naturalmente keine nennenswerte Zeit (zumindest nicht, wenn kein Programm corre, das die LoadLibrary-Aufrufe abfängt ).


Das Abfangen kostet keine Zeit. Die paar Assemblerfunktionen auch nicht. Wenn du den Piepton abstellst, wird nur Zeit per den Eintrag in die Listbox verbraucht.

Das Hochzählen ist ein Durchforsten der systemen Handlelisten. Da wird mitunter einiges an Speicher durchgesehen.
 
27.03.2007  
 





Das Hochzählen ist ein Durchforsten der systemen Handlelisten. Da wird mitunter einiges an Speicher durchgesehen.


Stiimt so nicht ganz. Wirf mal einen Blick mit MWatch auf die Kernelhandles eines Prozesses. Ich potuto mir vorstellen, dass da GetProcAdress unter Umständen viel mehr Zeit verbraucht.
 
27.03.2007  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

3.784 Views

Untitledvor 0 min.
Ernst30.04.2014
gerd17.02.2013
Untitled22.03.2012
Christian Hahn14.12.2011

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie