Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Der Compilier Schlater {$IMAGEBASE $XXXXXXXX} (https://www.delphipraxis.net/49247-der-compilier-schlater-%7B%24imagebase-%24xxxxxxxx%7D.html)

Win32.API 7. Jul 2005 21:23


Der Compilier Schlater {$IMAGEBASE $XXXXXXXX}
 
Hi,
kann mir jemand mal ein beispiel zeigen wie man IMAGEBASE einsetzt?
Oder wofür man es sinvoll nutzem kann?

Win32.API

Luckie 7. Jul 2005 21:30

Re: Der Compilier Schlater {$IMAGEBASE $XXXXXXXX}
 
Imagebase gibt die Adresse an im Adressraum des Prozesses an, an die ein Image geladen wird. Normal ist $00400000. Auf diese Adresse sind alle Sprünge berechnet im Code. So, wenn jetzt eine DLL geladen wird und diese hat auch als Imagebase die Adresse $00400000 geht das natürlich nicht und sie wird an eine höhere Adresse geladen. Jetzt wurde sie aber mit der Imagebase Adresse $00400000 kompiliert, ergo stimmen die Adressen nicht mehr und müssen von Windows mit Hilfe des Reallocationtables in dem Modul neu berechnet werden. jetzt könnte man, wenn man eine DLL für sein prgramm schreibt die Imagebase Adresse auf einen anderen Wert setzen, macht man aber eigentlich nicht, weil man ja nicht weiß, ob nicht schon Windows an diese geänderte Adresse eine DLL geladen hat und dann müssten die Adressen im Modul doch wieder neu berechnet werden. Hak es unter "gut zu wissen" ab und kümmer dich nicht weiter drum. ;)

Nachtrag, den Reallocatiotable kann man theoretisch aus einer Exe entfernen und so die Größe der Exe verringern. Aus DLL sollte man es aus obigen Gründen nicht tun, da dann Windows die Sprungadresse in der DLL nicht neu berechnen kann, wenn sie an eine andere Adresse geladen wird.

Win32.API 7. Jul 2005 21:37

Re: Der Compilier Schlater {$IMAGEBASE $XXXXXXXX}
 
Zitat:

Hak es unter "gut zu wissen" ab und kümmer dich nicht weiter drum. Wink
Danke für dem Tipp jetzt habe ich verstanden wofür es da ist und warum man es an manchen stellen braucht oder nicht braucht.
Danke

Win32.API

Luckie 7. Jul 2005 23:25

Re: Der Compilier Schlater {$IMAGEBASE $XXXXXXXX}
 
Ich habe auf meiner Homepage moch mal einen etwas überarbeiteten Artikel dazu verfasst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:55 Uhr.

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