PDA

View Full Version : تغيير ImageBase براي ايجاد DLL



دنیای دلفی
یک شنبه 13 مرداد 1387, 17:15 عصر
اين جمله مربوط به Borland است :

it is recommended that you use the $IMAGEBASE directive to specify a non-default
image base address, since the default image base address of $00400000 will almost
certainly never be available. The recommended address range of DLL images is $40000000
to $7FFFFFFF. Addresses in this range are always available to a process in both Windows
NT/2000 and Windows 95/98.آيا بهتر است براي سازگاري برنامه با ساير ويندوزها در
هنگام ساختن Dll ايميج بيس آن را دستي در رنج $40000000 to $7FFFFFFF قرار دهيم


ممنون اگر تخصصي توضيح دهيد .

vcldeveloper
یک شنبه 13 مرداد 1387, 19:01 عصر
بطور معمول $400000 هیچ وقت در یک برنامه دلفی در دسترس نیست، چون ImageBase پیش فرض EXEهایی که دلفی میسازه، 400000$ هست. 7FFFFFFF$ به بالا هم که مربوط به کدهای کرنل هست که در فضای آدرس همه Process ها بطور مشترک وجود دارند. پس شما باید همیشه ImageBase یک DLL را در محدوده این دو عدد تعریف کنید. ولی اینکه در این محدوده کدام ImageBase مناسب تر هست، بستگی به برنامه شما و DLLهایی که لود میکنه داره. بهتر هست برنامه را در IDE دلفی اجرا کنید و آدرس ImageBase برنامه و ماجول هایی که لود میکنه را بررسی کنید، و سعی کنید ImageBaseایی انتخاب کنید که کمترین تداخل را با آنها داشته باشه. البته اگر تداخل هم وجود داشته باشه، DLL شما لود و اجرا میشه، فقط Performance آن کاهش پیدا میکنه.