Русский / Russian English / Английский

Сейчас на форуме: Maxit (+1 невидимый пользователь)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Крэки, обсуждения —› VirtualAddress директории импорта из IMAGE_DATA_DIRECTORY
Посл.ответ Сообщение

Ранг: 40.9 (посетитель)
Статус: Участник
diProtector Software

Создано: 8 декабря 2005 00:28 New!
Цитата · Личное сообщение · #1

Чето не могу взять в толк... каким-то странным образом это поле обрабатывается - если в ноль его положить - виснет отладчик, если за границы образа в памяти - все ок. Кто знает про тонкости обработки этого поля загрузчиком? Каковы допустимые значения?

Ранг: 309.8 (мудрец)
Статус: Участник

Создано: 8 декабря 2005 15:39 · Поправил: SLV New!
Цитата · Личное сообщение · #2

эээ... там же rva по ходу... да и ноль ставить нельзя точно... а обрабатывается примерно так

mov edi,[edi].OptionalHeader.DataDirectory[sizeof IMAGE_DATA_DIRECTORY].VirtualAddress
add edi,[dwImageBase]

assume edi : ptr nothing

@@next_module:
mov esi,dword ptr[edi+0Ch]
test esi, esi
jz @_done
add esi,[dwImageBase]
push esi
call GetModuleHandle
.if eax==NULL
push esi
call LoadLibrary
.endif
mov esi,eax
mov edx,dword ptr[edi]
.if edx==NULL
mov edx,dword ptr[edi+10h]
.endif
add edx,[dwImageBase]
mov ebx,dword ptr[edi+10h]
add ebx,[dwImageBase]

@@next_thunk:
mov eax, [edx]
test eax,eax
jz @@last_thunk
push ebx
push edx
cdq
.if edx == 0
inc eax
inc eax
add eax, [dwImageBase]
.else
and eax, 7FFFFFFFh
.endif

push eax
push esi
call GetProcAddress
mov [ebx],eax
pop edx
pop ebx
add edx, 4
add ebx, 4
jmp @@next_thunk

@@last_thunk:
add edi, 14h
jmp @@next_module

@_done:

// SLV
 eXeL@B —› Крэки, обсуждения —› VirtualAddress директории импорта из IMAGE_DATA_DIRECTORY

Видеокурс ВЗЛОМ