Сейчас на форуме: tyns777, cppasm, dutyfree, asfa (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Добавить функцию в IAT
Посл.ответ Сообщение

Ранг: 0.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 11 апреля 2017 17:03 · Поправил: r_one_
· Личное сообщение · #1

Здравствуйте.

Есть dll в которую нужно добавить импорт функции, при добавлении фукция появляется в таблице импорта, но при указании её адреса call dword ptr [MyFunc], адреса нет, пробовал добавить CFF Explorer, IIDKing результат тот же самый, функция есть в таблице импорта, а адреса нет, но при просмотре в отладчике есть записанный адрес нужной мне функции dd xxxxxxx в секции с новым импортом.

В чем может быть проблемма, или я что-то делаю не так ?




Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 11 апреля 2017 18:18 · Поправил: daFix
· Личное сообщение · #2

r_one_
Вы не учли таблицу релокаций. Relocation Table

Приложите файлы с которыми работаете

-----
Research For Food




Ранг: 0.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 11 апреля 2017 18:49 · Поправил: r_one_
· Личное сообщение · #3

daFix
Объясните пожалуйста подробнее свой ответ.




Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 11 апреля 2017 19:02
· Личное сообщение · #4

r_one_
В PE формате предусмотрен механизм который позволяет подгружать исполняемые файлы по разным адресам(ImageBase), для этого используется таблица релокаций(RelocationTable). Грубо говоря, это просто таблица адресов которые надо пересчитывать под новую базу. Вам надо добавить в таблицу релокаций свой адрес "MyFunc" в команде call dword ptr [MyFunc]. Иначе, при подгрузке библиотеки по другому адресу, указатель будет смотреть в левый адрес

-----
Research For Food


| Сообщение посчитали полезным: r_one_

Ранг: 0.8 (гость)
Активность: 0.010
Статус: Участник

Создано: 11 апреля 2017 19:05 · Поправил: r_one_
· Личное сообщение · #5

daFix
Вы имеете ввиду записать вместо метки конкретный адрес ?



Ранг: 160.9 (ветеран), 1thx
Активность: 0.050
Статус: Участник

Создано: 11 апреля 2017 20:30
· Личное сообщение · #6

Нет, имеется ввиду что нужно добавить новый релок для вашего call dw ptr [MyFunc] или изменить существующий если был патч


 eXeL@B —› Вопросы новичков —› Добавить функцию в IAT
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати