Français
Forum

quelle Dll's invite un Programme?

 
- page 1 -



Frank
Abbing
un kleines Tool de mir sur API-Hooking la base. dans einer Listbox volonté alle Dlls aufgelistest, qui justement de Programmen geladen wurden.

simple Exe starten et ensuite irgendwelche Programme starten. en Dlls devrait maintenant gelistet volonté et es pieps kurz.
s'il te plaît testet la fois, si es encore irgendwo hakt.

3 kB
Hochgeladen:22.03.2007
Downloadcounter101
Download
 
22.03.2007  
 



 
- page 4 -



RGH
hé, hé, Frank, cela était oui aussi plutôt comme Gag gedacht.

Beides hat arrêt sa Vorteile: dynamisches ou bien statisches Linken.

et je widerspreche oui pas, qui statisches Linken plus rapide ist. qui Hauptgrund pour ist mais, qui beim dynamischen Linken avant dem Call plan un GetProcAdress notwendig ist, qui beim statischen linken wegfällt. (c'est oui aussi un Grund, weshalb, qui OpenGL-DLL pour qui XProfan-eigene OGL-Funktion dans XProfan statisch gelinkt sommes. cela ging naturellement seulement, weil chacun XProfan-fähige Version Windows OpenGL soutenu.)

Beides läßt sich aussi avec XProfan programmieren:
KompilierenMarqueSéparation
 $H Windows.ph                                       WindowsHeaderdatei nutzen
Declare hDLL&, Time&, Text$
hDLL& = @UseDLL(USER32.DLL)
Print Dynamisches Linken mit DEF: ;
Def GetWText(3) !User32.dll, GetWindowTextA
Text$ = @Space$(40)
Time& = &GetTickCount

whileLoop 1, 100000

    GetWText(%hWnd, @Addr(Text$), 40)

endwhile

print Int(&GetTickCount - Time&)
Print Dynamisches Linken mit EXTERNAL: ;
Text$ = @Space$(40)
Time& = &GetTickCount

whileLoop 1, 100000

    External(User32.dll, GetWindowTextA, %hWnd, @Addr(Text$), 40)

endwhile

print Int(&GetTickCount - Time&)
Print Dynamisches Linken mit Header-Datei: ;
Text$ = @Space$(40)
Time& = &GetTickCount

whileLoop 1, 100000

    ~GetWindowText(%hWnd, @Addr(Text$), 40)

endwhile

print Int(&GetTickCount - Time&)
Print Statisches Linken: ;
Declare GetWText&
GetWText& = ~GetProcAddress(hDLL&, GetWindowTextA)
Text$ = @Space$(40)
Time& = &GetTickCount

whileLoop 1, 100000

    @Call(GetWText&, %hWnd, @Addr(Text$), 40)

endwhile

print Int(&GetTickCount - Time&)
waitinput
/../funktionsreferenzen/XProfan/end/'>end

Um cela statische Linken trop simplifier, pourrait on naturellement une zusätzliche Funktion einbauen, etwa:

GetWText& = GetLibAddr(User32.DLL, GetWindowTextA)

Salut
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  
 




RGH
Andreas Hötker
je pourrait mir présenter, dass là GetProcAdress sous Umständen viel plus Zeit usé.


Sag je doch!

deux ..., un idée!

Salut
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  
 



quoi je avec cela dire voulais:
si je cela im Augenblick richtig vois, teilt Windows qui Handles dans verschiedene Kathegorien sur - et speichert qui aussi unterschiedlich ab (Kernel-, GDI-, Userhandles...). Handles sur geladene DLL wirst du pas sous den Kernelhandles finden; qui volonté alors (oui c'est ca so comment Handles sur Speicherbereiche) gesondert behandelt.
si je cela richtig vois, doit mais chez GetProcAdress sous Umständen jusque 1000 verschiedene Pointer durchgesehen volonté...
 
27.03.2007  
 




RGH
comme Untermauerung qui Vermutung, qui ~GetProcAdress plus Zeit kostet:
KompilierenMarqueSéparation
 $H Windows.ph        WindowsHeaderdatei nutzen
Declare hDLL&, Time&
hDLL& = UseDLL(USER32.DLL)
Print UseDLL: ;
Time& = &GetTickCount

whileLoop 1, 100000

    UseDLL(USER32.DLL)

endwhile

print Int(&GetTickCount - Time&)
Print GetProcAdress: ;
Time& = &GetTickCount

whileLoop 1, 100000

    ~GetProcAddress(hDLL&, GetWindowTextA)

endwhile

print Int(&GetTickCount - Time&)
waitinput
end

Salut
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

comme Untermauerung qui Vermutung, qui ~GetProcAdress plus Zeit kostet:


Oooch Roland. la hâte mais pas beachtet, cela on im Programme GetProcAdress() pro Funktion seulement EINMAL benutzen muss. Zum Sauver qui Adresse suffisant ensuite une simple Variable. Dein Code allez entier am Thema vorbei, sodass dein comparaison mächtig hinkt...


si je cela im Augenblick richtig vois, teilt Windows qui Handles dans verschiedene Kathegorien sur - et speichert qui aussi unterschiedlich ab (Kernel-, GDI-, Userhandles...). Handles sur geladene DLL wirst du pas sous den Kernelhandles finden; qui volonté alors (oui c'est ca so comment Handles sur Speicherbereiche) gesondert behandelt.
si je cela richtig vois, doit mais chez GetProcAdress sous Umständen jusque 1000 verschiedene Pointer durchgesehen volonté...


oui, si du es richtig voyons würdest. la hâte du dir den Quellcode la fois angesehen? je hab reingesehen... cela hat avec cela mais rein gar rien trop 1faire.
je sagte bereits, GetProcAdress ist seulement einmal pro Funktion nötig. avec cette technologie ist es pas nötig Daueraufrufe trop produzieren, comment Roland es derzeit pouvoir. Dass Profancodes effizienter fonctionnement volonté peut, zeigt XPSE plus que deutlich. la hâte du cela aussi la fois getestet, Roland? je denke - non.
Hab deinen Code un kleines un peu modifiziert et maintenant funktioniert il so, comment WhichDlls es dargelegt hat. là sieht es rabenschwarz aus pour deine technologie. qui Geschwindigkeitszuwachs avec statischer Adresse beträgt 100 Prozent, ist alors doppelt so vite...
KompilierenMarqueSéparation
hehe
 
27.03.2007  
 



cela erinnert mich doch très à den xpse-Selbsttest:  [...] 

je trouve cela Zeigt déjà très oui c'est ca den Geschwindigkeitsunterschied.

je trouve cela XProfan de maison aus cet xpseTechnik mitbringen sollte - et gebe Frank droite avec cela si il meinte cela XProfan ici dans den meisten Fällen völlig übertrieben et unnötig qui Funktionsadresse chaque la fois récente ermittelt ou bien gar qui DLL avec LoadLibrary magasin veux. Wofür soll cela bien son?
 
27.03.2007  
 




RGH
Frank Abbing
Oooch Roland. la hâte mais pas beachtet, cela on im Programme GetProcAdress() pro Funktion seulement EINMAL benutzen muss. Zum Sauver qui Adresse suffisant ensuite une simple Variable.


Oooch Frank, la hâte Du pas beachtet, qui mon erstes Programme GetProcAdress() aussi seulement einmal aufruft et cela zweite seulement en supplément dient, den Zeitaufwand entre GetProcAdress() et LoadLibrary() trop comparer, à déterminer, qui beim dynamischen Aufruf qui Zeit verbrät?

si je dans XProfan cela dynamische Linken bevorzuge, ensuite doit je qui Adresse ensuite bestimmen, si le Funktion cela erste la fois verwandt wird. si vous ensuite à anderer Stelle im Programme wieder verwandt wird, doit je vous wieder bestimmen ou bien je devrait dans einer Tabelle nachsehen, si qui bereits bekannt (et encore gültig) ist et vous ensuite verwenden. cela wäre zusätzlicher Verwaltungsaufwand.

l'autre Alternative ist qui Umwandlung dans une statischen Aufruf, so comme qui XPSE (et mon obiges Beispiel) pouvoir. là cela chez zeitkritischen Dingen Sinn faire peux, habe je oui bereits vorgeschlagen, cela dans qui prochain XProfan-Version comme Alternative einzubauen. Comme je le disais: beide Varianten avons ses avant- et Nachteile.

Salut
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

et cela zweite seulement en supplément dient, den Zeitaufwand entre GetProcAdress() et LoadLibrary() trop comparer, à déterminer, qui beim dynamischen Aufruf qui Zeit verbrät?


comment déjà dit - am Thema vorbei.

Es liegt mir loin dir quelque chose vorschreiben trop voulons et j'aime solche Diskussionen aussi gar pas. tu as ici une Possibilité qui Effizienz de XProfan encore trop steigern. quoi du letztendlich daraus fais, et si et comment du qui Kritik deiner User umsetzt, ist deine l'affaire.
 
28.03.2007  
 



allô Roland...

la fois trop deinem Code:
peux es son, dass du là quelque chose mogelst? Usedll mais est un statischer Aufruf et GetProcAdress - wird cela là pas dynamisch aufgerufen???
 
28.03.2007  
 



allô Frank...



la hâte du dir den Quellcode la fois angesehen? je hab reingesehen... cela hat avec cela mais rein gar rien trop 1faire.


suis alles autre comme un Experte pour ASM. quoi mach qui Code de GetProcAdress car oui c'est ca? Durchsucht qui pas den Table pour qui angegebenen Funktion?
Lerne volontiers quoi en supplément.
 
28.03.2007  
 



wohin liegt qui Denkfehler dans folgendem Code:
KompilierenMarqueSéparation
 $H Windows.ph        WindowsHeaderdatei nutzen
Declare hDLL&, Time&, DLL$,LoadLibraryA&,GetProcAddress&,Funktion$,StringAddr&
LET DLL$=Kernel32.DLL
hDLL& = ~LoadLibraryA(@addr(DLL$))
LET Funktion$=GetProcAddress
LET GetProcAddress&=~GetProcAddress(hDLL&, @addr(Funktion$))
LET Funktion$=LoadLibraryA
LET LoadLibraryA&=~GetProcAddress(hDLL&, @addr(Funktion$))
LET DLL$=USER32.DLL
hDLL& = ~LoadLibraryA(@addr(DLL$))
Print Ohne irgendwas: ;
Time& = &GetTickCount

whileLoop 1, 100000

endwhile

print Int(&GetTickCount - Time&)
LET DLL$=$SYSPATH+USER32.DLL
Print LoadLibraryA +DLL$+ :;
StringAddr& = addr(DLL$)
Time& = &GetTickCount

whileLoop 1, 100000

    call(LoadLibraryA&,StringAddr&)

endwhile

print Int(&GetTickCount - Time&)
LET DLL$=USER32
Print LoadLibraryA +DLL$+ :;
StringAddr& = addr(DLL$)
Time& = &GetTickCount

whileLoop 1, 100000

    call(LoadLibraryA&,StringAddr&)

endwhile

print Int(&GetTickCount - Time&)
Print GetProcAdress ActivateKeyboardLayout: ;
Let Funktion$=ActivateKeyboardLayout
StringAddr& = addr(Funktion$)
Time& = &GetTickCount

whileLoop 1, 100000

    call(GetProcAddress&,hDLL&, StringAddr&)

endwhile

print Int(&GetTickCount - Time&)
Print GetProcAdress wvsprintfW: ;
Let Funktion$=wvsprintfW
StringAddr& = addr(Funktion$)
Time& = &GetTickCount

whileLoop 1, 100000

    call(GetProcAddress&,hDLL&, StringAddr&)

endwhile

print Int(&GetTickCount - Time&)
waitinput
ss=s4 href='./../../funktionsreferenzen/XProfan/end/'>end
 
28.03.2007  
 




RGH
Andreas Hötker
quoi mach qui Code de GetProcAdress car oui c'est ca? Durchsucht qui pas den Table pour qui angegebenen Funktion?


c'est arrêt une API-Funktion, qui qui absolute Adresse einer Funktion eines geladenen Moduls zurückgibt. comment vous cela fait, entzieht sich meiner Kenntnis. là Microsoft sa Quellcodes (weitestgehend C et C++ avec ASM-partager) pas veröffentlicht, ist es aussi pas entier simple cela herauszubekommen. (Aussi serait cela eh pas weiterhelfen.)
je vermute mais simple folgendes: une DLL contient dans ihrem En-tête une liste qui dans son exportierten Funktionen avec den Einsprungadressen. je prends daher à, qui GetProcAdress sur cela Handle qui DLL sur cet liste zugreift.

Salut
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
28.03.2007  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

3.682 Views

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

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie