![]() |
eXeL@B —› Основной форум —› Непонятки с ImpREC |
Посл.ответ | Сообщение |
|
Создано: 21 января 2006 14:14 · Личное сообщение · #1 Часто сталкиваюсь с проблемой при распаковке DLL. Как известно, OEP надо вводить без ImageBase. Это понятно. Но иногда ImpREC пишет, что по этому адресу ничего не найдено. НО, ЧИТАЙТЕ ВНИМАТЕЛЬНО! Не найдено не потому, что это неправильный OEP, а потому, что ImpREC неправильно его рассчитывает. С exe'шниками такой проблемы нет. А теперь самое интересное (значения для примера). Берем exe'шник. Вписываем OEP: 0008C1AC. Жмем "IAT AutoSearch". Адрес начала и размер IAT найдены: 00095000 и 000003F4, соответственно. Все OK! Пробуем то же самое, только с DLL. OEP: 0000A7FD. Жмем "IAT AutoSearch". Нихрена не найдено! Ладно. Вбиваем адрес начала IAT и размер вручную: 00010000 и 00000500. Жмем "Get Imports". Говорит, что не может прочитать память процесса. Что за хрень? Оказывается, чтобы ImpREC нормально считал память этой DLL, нужно в RVA указывать абсолютный адрес IAT (который мы видим в отладчике) минус ImageBase. Бинго! Таблица импорта правильная! Жмем "Fix Dump" и... ЖЕСТОКО ОБЛАМЫВАЕМСЯ! Invalid dump file! Can't match RVA to Offset in the dump file Дамп - дерьмо! Не могу подогнать RVA к оффсету в дампе Вот в чем проблема! Как это решить? Кто-нибудь сталкивался с этим? ----- MicroSoft? Is it some kind of a toilet paper? ![]() |
|
Создано: 21 января 2006 14:16 · Личное сообщение · #2 |
|
Создано: 21 января 2006 14:23 · Личное сообщение · #3 |
|
Создано: 21 января 2006 14:24 · Личное сообщение · #4 http://www.exelab.ru/f/action=vthread&forum=1&topic=2151 последние ответы ----- Yann Tiersen best and do not fuck ![]() |
|
Создано: 21 января 2006 14:29 · Личное сообщение · #5 |
![]() |
eXeL@B —› Основной форум —› Непонятки с ImpREC |