Сейчас на форуме: hgdagon, asfa, bartolomeo (+4 невидимых)

 eXeL@B —› Программирование —› Нужно подробное описание структуры секции импорта
Посл.ответ Сообщение

Ранг: 39.6 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 14 декабря 2006 01:03
· Личное сообщение · #1

Не могу найти нормальное описание структуры секции импорта PE. Хорошо бы какой-нибудь любой сорц по работе с таблицой импорта на языке С++ или в крайнем случае на асме. Если есть у кого-нибудь инфа или сорц киньте плиз.



Ранг: 39.6 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 14 декабря 2006 01:29
· Личное сообщение · #2

В принципе нашел подходящее на www.wasm.ru/article.php?article=memfile



Ранг: 135.2 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 14 декабря 2006 01:35
· Личное сообщение · #3

offtop
хмм а причем тут импорт?



Ранг: 39.6 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 14 декабря 2006 02:57
· Личное сообщение · #4

Как раз он и причем. На этой станице есть функция по обработке таблицы импорта
proc process_imports pTab,pImageBase



Ранг: 39.6 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 14 декабря 2006 02:57
· Личное сообщение · #5

proc process_imports pTab,pImageBase
;pTab - RVA таблицы импортов (берем из массива DataDirectory)
;pImageBase - указатель на "память"
pusha
mov edx,[pTab]
add edx,[pImageBase]
;VA таблицы импортов
.loop:
push edx
mov edi,[edx+4*4]
;import address table (её и будем заполнять)
mov esi,[edx]
;lookup table (можно сделать просто = import address table, они идентичны)
test edi,edi
jz .ends
;последний IMAGE_IMPORT_DESCRIPTOR нулевой
test esi,esi
jnz .ok
mov esi,edi
.ok:
mov ecx,[pImageBase]
add esi,ecx
add edi,ecx
;VA соответствующих таблиц
mov eax,[edx+4*3]
add eax,ecx
;VA имени DLL
@@:
cmp byte[eax],0
jnz @f
inc eax
jmp @b
;могут быть нули для выравнивания
@@:
xinvoke LoadLibrary,eax
mov edx,eax
;загрузить DLL
.po_1_dll:
lodsd
;RVA IMAGE_IMPORT_BY_NAME
test eax,eax
jz .exit_it
;таблица заканчивается нулевым элементом
bt eax,31
;если установлен 31 бит, то импорт по ординалу.
jnc .no_ord
and eax,0ffffh
jmp .getproc
.no_ord:
add eax,[pImageBase]
;VA IMAGE_IMPORT_BY_NAME
add eax,2
;VA IMAGE_IMPORT_BY_NAME.Name
.getproc:
push edx
xinvoke GetProcAddress,edx,eax
;получить адрес АПИ
pop edx
stosd
;поместить его на свое место
jmp .po_1_dll
.exit_it:
pop edx
add edx,5*4
;перейти к следующему IMAGE_IMPORT_DESCRIPTOR
jmp .loop
.ends:
pop edx
popa
ret
endp




Ранг: 420.3 (мудрец)
Активность: 0.240
Статус: Участник

Создано: 14 декабря 2006 03:32
· Личное сообщение · #6

NetSpider пишет:
Не могу найти нормальное описание структуры секции импорта PE. Хорошо бы какой-нибудь любой сорц по работе с таблицой импорта на языке С++ или в крайнем случае на асме. Если есть у кого-нибудь инфа или сорц киньте плиз.

Обратись к первоисточнику http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/pecoff_v8.doc

-----
Сколько ни наталкивали на мысль – все равно сумел увернуться





Ранг: 155.4 (ветеран)
Активность: 0.140
Статус: Участник
Робо-Алкаш

Создано: 15 декабря 2006 12:25
· Личное сообщение · #7

есть такая мудрая аббревиатура MSDN обратись туда..

-----
Researcher




Ранг: 39.6 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 16 декабря 2006 00:13
· Личное сообщение · #8

Valdis
Большое спасибо за ссылку.Реально помогло!
Тему считаю закрытой.

Overwriter
Коддингом занимаюсь более 6 лет.Думаешь я не знаю про MSDN?И к тому же не всегда там бывает то, что нужно.


 eXeL@B —› Программирование —› Нужно подробное описание структуры секции импорта
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати