Беру две одинаковые системные .dll, одну с XP, другую с 2k, гружу в иду и вижу такую картину: 2k: Код (Text): .text:7969CC54 dd offset aVersion_dll ; "VERSION.dll" .text:7969CC58 dd offset VERSION_dll_handle ; Module handle .text:7969CC5C dd offset __imp_GetFileVersionInfoA ; Delayed Import Address Table .text:7969CC60 dd offset VERSION_dll_dint ; Delayed Import Name Table xp: Код (Text): .text:77AF2C98 dd offset aVersion_dll - offset __ImageBase ; "VERSION.dll" .text:77AF2C9C dd offset VERSION_dll_handle - offset __ImageBase ; Module handle .text:77AF2CA0 dd offset __imp_GetFileVersionInfoA - offset __ImageBase ; Delayed Import Address Table .text:77AF2CA4 dd offset VERSION_dll_dint - offset __ImageBase ; Delayed Import Name Table Если посмотреть, скажем, LordPE на эти поля, то в первом случае значения будут с учётом ImageBase, во втором без. Вопрос - почему есть такая разница и от чего она зависит?
посмотри исходник... в версии для ХР там напротив этих строк (87-90строки) коментарии //We loxanulis po polnoi in 2k .dll. we need otnyat' ImageBase
Сорри, не четко сформулировал вопрос. Поле PIMAGE_DELAY_IMPORT_DESCRIPTOR -> pIAT, например. Библиотека shell32.dll. Для xp: Код (Text): ->Delay Import Directory 1. DelayImportDescriptor: grAttrs: 0x00000001 (dlattrRva) DLLName (R)VA: 0x001F6380 ("WINMM.dll") Hmod (R)VA: 0x00219E4C IAT (R)VA: 0x001FE4D8 Для 2k: Код (Text): ->Delay Import Directory 1. DelayImportDescriptor: grAttrs: 0x00000000 DLLName (R)VA: 0x7CE9D260 ("RPCRT4.dll") Hmod (R)VA: 0x7CF9EF74 IAT (R)VA: 0x7CF9C6D8 Т.е. для 2к поле уже содержит ImageBase, а в xp нет.. собственно вопрос почему так.