Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2012, 14:33   #1
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию таблица импорта

Здравствуйте. Читаю туториалы по ассемблеру, взятые с WASM-a. Автор рассказал о массиве структур IMAGE_DATA_DIRECTORY, который состоит из 16 элементов.
Во-первых, немножко непонятно. Объявлено 16 элементов
DataDirectory IMAGE_DATA_DIRECTORY 16 dup(<>)
А далее идёт табличка только с 15 элементами
Паpаметp Инфоpмация
0 Символы экспоpта
1 Символы импоpта
2 Ресуpсы
3 Исключение
4 Безопасность
5 Base relocation
6 Отладка
7 Стpока копиpайта
8 Unknown
9 Thread local storage (TLS)
10 Загpузочная инфоpмация
11 Bound Import
12 Таблица адpесов импоpта
13 Delay Import
14 COM descriptor

И на странице 294 самое интересное
Код:
mov edi,pNTHdr
assume edi:ptr IMAGE_NT_HEADERS
mov edi, [edi].OptionalHeader.DataDirectory[sizeof
    IMAGE_DATA_DIRECTORY].VirtualAddress
Зачем здесь sizeof IMAGE_DATA_DIRECTORY
К какому элементу массива структур мы обращаемся и почему?
Если нам нужно получить VirtualAddress символов импорта, то почему бы просто не написать
Код:
mov edi, [edi].OptionalHeader.DataDirectory[1].VirtualAddress
Dimarik вне форума Ответить с цитированием
Старый 07.01.2012, 11:10   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

по факту
Код:
mov edi, [edi].OptionalHeader.DataDirectory[sizeof IMAGE_DATA_DIRECTORY].VirtualAddress
тоже самое что и
Код:
mov edi, [edi].OptionalHeader.DataDirectory[1].VirtualAddress
не знаю где ты нашёл это, но это просто через жопу написанный код
rpy3uH вне форума Ответить с цитированием
Старый 07.01.2012, 16:37   #3
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

Цитата:
Сообщение от rpy3uH Посмотреть сообщение
не знаю где ты нашёл это, но это просто через жопу написанный код
http://www.wasm.ru/
13. Туториалы Iczelion'а для печати [Iczelion, обработал krutan] →
и на стр 286 автор начинает рассказ о таблице импорта))
Dimarik вне форума Ответить с цитированием
Старый 09.01.2012, 00:06   #4
yuran666666
Форумчанин
 
Аватар для yuran666666
 
Регистрация: 23.04.2009
Сообщений: 346
По умолчанию

assume editr IMAGE_NT_HEADERS
mov eax, [edi].OptionalHeader.DataDirectory[sizeof
IMAGE_DATA_DIRECTORY*0].VirtualAddress ;0 Символы экспоpта
mov eax, [edi].OptionalHeader.DataDirectory[sizeof
IMAGE_DATA_DIRECTORY*1].VirtualAddress ;1 Символы импоpта
mov eax, [edi].OptionalHeader.DataDirectory[sizeof
IMAGE_DATA_DIRECTORY*2].VirtualAddress ;2 Ресуpсы
mov eax, [edi].OptionalHeader.DataDirectory[sizeof
IMAGE_DATA_DIRECTORY*3].VirtualAddress ;3 Исключение
;etc
Нет, ну правда..
yuran666666 вне форума Ответить с цитированием
Старый 10.01.2012, 14:35   #5
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

Хочу вытянуть значение Name1 из структуры IMAGE_IMPORT_DESCRIPTOR.
сначала идёт работа с адресом NAme, а потом уже этот "обработанный" адрес посылается в функцию lstrcat, правда фигню какую-то выдаёт:
Код:
Таблица импорта
 
OriginalFirstThunk = 2064
TimeDateStamp = 0
ForwarderChain = 0
Name = 
FirstThunk = 2010
 
OriginalFirstThunk = 2054
TimeDateStamp = 0
ForwarderChain = 0
Name = 
FirstThunk = 2000
Всё самое интересное с Name происходит здесь:
Код:
 
;строки 396-398
invoke RVAToOffset, DD_adressOfMappingFile, EDI
                        mov EDX, EAX
                        add EDX, DD_adressOfMappingFile
и здесь
Код:
 
;строки 413,414
                        invoke lstrcat, offset strIDTemplate_Name, EDX
И ещё. Это нормально что у меня выводит:
TimeDateStamp = 0
ForwarderChain = 0
???
Я разные PE-файлы тестировал, у меня во всех нули выдаёт.
Вот сам код ПОЛНОСТЬЮ:
http://zalil.ru/32462871
Dimarik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
таблица импорта Dimarik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 22.09.2011 11:26
касательно импорта данных из Web Volodymyr Microsoft Office Excel 3 14.02.2011 13:38
Таблица импорта PE программы Celestia Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 21.11.2010 16:24
Оптимизация импорта из DBF Marina Andreeva БД в Delphi 5 15.05.2009 19:09
Автоматизация импорта процедур nerh Общие вопросы Delphi 1 13.10.2008 22:56