Сейчас на форуме: rmn, Magister Yoda, vasilevradislav, tyns777, zombi-vadim (+5 невидимых) |
![]() |
eXeL@B —› Программирование —› Вопрос по построению таблицы импорта вручную |
Посл.ответ | Сообщение |
|
Создано: 02 сентября 2008 22:09 · Личное сообщение · #1 Вот собственно собираю свою таблицу импорта вручную, и тут тормознулся на одном моменте. Ниже предоставлен фрагмент из структуры IMAGE_IMPORT_DESCRIPTOR. Code:
Что это за число такое перед началом структуры и главное - почему первый список имён функций завершается названием библиотеки, а все последующие списки с неё начинаются Code:
Дальше списки будут токрываться именем библиотеки. Тоесть в первом списке мне всегда надо будет закрывать список именем библиотеки, а во всех последующих открывать? ----- Research For Food ![]() |
|
Создано: 02 сентября 2008 22:30 · Личное сообщение · #2 |
|
Создано: 02 сентября 2008 22:37 · Личное сообщение · #3 |
|
Создано: 02 сентября 2008 23:18 · Личное сообщение · #4 daFix никто тебя ничем не ограничивает, как захочешь так и будет. Можешь сделать список из длл за ним список из апи, хочешь сделай длл, за ней все апи, снова длл.... А то что ты приводишь - ... ну просто линкер захотел сделать так, ты не обязан повторять, если конечно не хочешь под него косить. ----- Yann Tiersen best and do not fuck ![]() |
|
Создано: 02 сентября 2008 23:32 · Личное сообщение · #5 |
|
Создано: 02 сентября 2008 23:37 · Личное сообщение · #6 daFix пишет: Дальше списки будут окрываться именем библиотеки. Тоесть в первом списке мне всегда надо будет закрывать список именем библиотеки, а во всех последующих открывать? Нет, имена библиотек и имена функций можешь как угодно располагать, главное чтобы указатели на них были правильные. Перед именем функции указывается ее ординал (т.е. номер по которому она экспортируется из требуемой библиотеки), размер 2 байта (т.е. word). После имени функции должен соответственно идти ноль. Почитай про структуру импорта, а лучше сразу загрузи с сайта Майкрософта описание формата PE, посмотришь его и многие вопросы отпадут сами. Microsoft Portable Executable and Common Object File Format Specification http://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx Вкратце, у тебя должно быть 3 массива: 1. IAT Указатели на первый Thunk и имя библиотеки (для каждой библиотеки по записи), 1 запись состоит из 5 dword'ов, конец 5 пустых dword'ов, т.е. нулей) - структуру смотри в описании. 2. Thunks Указатели на имена функций, функции разных библиотек разделяются нулем (dword), конец всего массива - два нуля. 3. Имена функций Как уже говорил с ординалами перед именем и нулем в конце строки. ![]() |
|
Создано: 03 сентября 2008 00:03 · Личное сообщение · #7 |
|
Создано: 03 сентября 2008 11:03 · Поправил: theCollision · Личное сообщение · #8 daFix Указатель, который хранится в DataDirectory 2-м по счету, 1-й это экспорт. Так вот этот указатель на массив структур (IMAGE_IMPORT_DESCRIPTOR) и имеет тип (IMAGE_IMPORT_DESCRIPTOR*) . Каждая такая структура описывает одну dll, т.е. все фукции из этой dll используемые в программе можно найти благодаря этой структуре . Это один из импортов, называемый стандартным ;) Еще вопросы ? ----- My love is very cool girl. ![]() |
|
Создано: 03 сентября 2008 12:31 · Поправил: daFix · Личное сообщение · #9 theCollision Наверное ты не понял вопроса или я туплю. Этот адрес(0044F6A3) не входит в структуру. Он находится перед ней. Ссылается на следующие байты: Code:
Или может быть это случайное число которое не имеет ни какого отношения к таблице импорта? ----- Research For Food ![]() |
|
Создано: 03 сентября 2008 12:38 · Личное сообщение · #10 |
|
Создано: 03 сентября 2008 12:58 · Личное сообщение · #11 |
|
Создано: 03 сентября 2008 18:55 · Поправил: =TS= · Личное сообщение · #12 |
|
Создано: 03 сентября 2008 19:07 · Личное сообщение · #13 |
|
Создано: 03 сентября 2008 23:21 · Личное сообщение · #14 |
![]() |
eXeL@B —› Программирование —› Вопрос по построению таблицы импорта вручную |