Программы для восстановления импорта PE-файлов
Сперва немного теории. Импортируемая функция - это API-функция, которая не находится в исполняемом модуле, но вызывается им. Такие функции физически находятся в одной или более внешних DLL, а в вызывающем исполняемом модуле находится только информация о них. Эта информация оформлена в виде таблицы, включающей сами имена вызываемых функций и названия DLL, в которых они находятся. Более подробную информацию можете поискать в интернете, здесь я останавливаться не буду. Упаковщики и протекторы обрабатывают таблицу импорта и очень часто вносят в нее изменения, направленные на затруднение их снятия. Поэтому восстановление таблицы импорта исполняемых файлов - обязательный процесс при ручной и автоматизированной распаковке. Для восстановления таблицы импорта созданы специальные программы, некоторые из которых есть в свободном доступе.Скриншот программы ImpRec
Самая известная программа для восстановления импорта - ImpRec от MackT. ImpRec позволяет выполнять автоматический поиск таблицы импорта, трассировать несколькими способами нераспознанные функции, а также сохранять таблицу импорта в текстовый файл для последующего анализа и в дальнейшем использовать ее для работы. Поддерживаются плагины определения функций импорта для разных протекторов, в архиве есть примеры с исходными текстами. Также ImpRec распространяется в виде отдельного DLL-файла, который используется во многих проектах (например, ArmaGeddon). Последняя официальная версия ImpRec 1.6 Final, но так как автор открыл исходные тексты, последователями были созданы несколько версий линейки 1.7. Несмотря на все полезные нововведения, я уже несколько раз сталкивался с тем, что версии 1.7 не могут правильно восстановить таблицу импорта, поэтому продолжаю пользоваться классической версией 1.6
Скриншот программы Revirgin
Если я не ошибаюсь, то программа Revirgin была самой первой разработкой в области автоматического восстановления импорта. С тех пор она претерпела множество доработок и изменений, но лично у меня популярностью не пользуется. При установке Revirgin копирует несколько своих файлов в системные директории, что несколько затрудняет ее использование на съемных носителях, в отличие от полностью портативной ImpRec.
Скриншот программы The Cheap Imports Reconstructor
CHimpREC: The Cheap Imports Reconstructor от известной команды ARTeam - в настоящее время одна из немногих программ для восстановления импорта 64-битных файлов, но в комплекте есть версия и для 32-битных систем. Интерфейс очень похож на классический ImpRec, есть встроенный дампер процессов (в том числе и 64-битных) и ручной редактор импорта. К сожалению, часть функций типа трейсера и поддержки плагинов пока не реализованы, но CHimpREC уже является мощным инструментом, в некоторых случаях даже превосходящим ImpRec. С нетерпением жду новых релизов от автора.
Скриншот программы imp64
Еще один инструмент от ARTeam - imp64. Как можно предположить из названия, это еще одна программа для восстановления импорта 64-битных файлов, плюс в ней есть дампер процессов. Но основная ценность заключается в том, что imp64 распространяется с исходниками. Скачать все это добро можно с офсайта.
Скриншот программы Imports Fixer
Imports Fixer от крякерской команды SnD. Попытка собрать в одну программу все подручные инструменты: восстановление импорта, дампер, дизассемблер, HEX-редактор и калькулятор. Ни разу не пользовался ей на практике, так что больше ничего сказать не могу.
Скриншот программы Scylla Imports Reconstruction
Scylla Imports Reconstruction - один из новых инструментов, но уже успевший завоевать популярность. Как пишет сам автор, во всех программах для восстановления импорта есть недостатки, и он решил сделать свой инструмент, в котором их не будет. Есть версия как для х86-платформ, так и для 64-битных, а главное, что полностью открыты исходные коды. Рекомендую к использованию.
Ну и напоследок выложу несколько вспомогательных утилит, которые могут пригодиться при работе с импортом исполняемых файлов.
Скриншот программы Universal Import Fixer
Universal Import Fixer помогает восстановить и перестроить таблицу импорта в памяти процесса, защищенного такими протекторами, как Armadillo, ASProtect, Enigma, ExeCryptor, eXPressor, PeSpin, RlPack, Themida, WinLicense и других. UIF восстанавливает перенаправленный, эмулированный импорт, прямые вызовы, и прочую мутотень, которую аффтары протекторов используют для защиты. В комплекте прилагается видеоролик, демонстрирующий пример распаковки защищенного файла с помощью UIF. Вы также можете использовать Universal Import Fixer как внешний модуль в своих проектах, для этого в архиве есть SDK с документацией. При грамотном использовании будет очень серьезным инструментом.
Скриншот программы IT Compare
Программа IT Compare предназначена для сравнения таблиц импорта, созданных ImpRec и Revirgin. Это помогает в ситуациях, когда по какой-либо причине после восстановления импорта каждой программой по отдельности полученный файл все равно не работает. В этом случае вы сохраняете в текстовый файл таблицу импорта сперва при помощи ImpRec, затем при помощи Revirgin, а потом программой IT Compare сравниваете результаты. В некоторых случаях это действительно помогает найти причину вылета.
Скриншот программы UnpkT0l
Утилита UnpkT0l позволяет автоматически исправить значения SizeOfImage, Checksum, TLS и Relocation Table, а также таблицы импорта в распакованном файле. Пригодится на всякий случай.
На этом пока все, если в свободном доступе появятся еще какие-нибудь полезные инструменты, то я обязательно их сюда добавлю.
Просмотров: 22045 | Комментариев: 15
Метки: реверсинг
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
OUT00B2
(15.01.2020 в 22:37):
Благодарю за подборку! Автор, ты жжош сердца глаголом! :)
Если что, офсайт Сциллы тут: https://github.com/NtQuery/Scylla. Там же последняя версия: 0.98.
Если что, офсайт Сциллы тут: https://github.com/NtQuery/Scylla. Там же последняя версия: 0.98.
Anonymous
(01.07.2018 в 13:35):
user, ищите гуглом по запросу "Import REConstructor v1.7f.7z"
Оно, на текущий момент, лежит тут: https://gironsec.com/code/
Оно, на текущий момент, лежит тут: https://gironsec.com/code/
user
(22.10.2017 в 01:51):
Упоминалась версия Import Reconstructor v.1.7 F - якобы неофициальная, пофиксенная.
Но найти её не удалось.
Но найти её не удалось.
ManHunter
(15.11.2011 в 17:11):
Voffka, да, видел его, но пока руки не дошли выложить.
Voffka
(13.11.2011 в 14:30):
Вот еще опенсурсный
Scylla Imports Reconstruction
http://forum.tuts4you.com/topi...tion-source/
http://forum.tuts4you.com/topi...onstruction/
Scylla Imports Reconstruction
http://forum.tuts4you.com/topi...tion-source/
http://forum.tuts4you.com/topi...onstruction/
will shine
(08.10.2011 в 04:43):
> 1)http://www.wasm.ru/article.php?article=ollydbg33
> 2)http://www.wasm.ru/article.php?article=ollydbg34
Спасибо за наводку, отличные туториалы!
> 2)http://www.wasm.ru/article.php?article=ollydbg34
Спасибо за наводку, отличные туториалы!
Владислав
(24.09.2011 в 19:35):
Дорогой писатель! Пока не читал вашу статью,но обязательно это сделаю,так как я новичок и мне это интересно,но советую также к прочтению две зачемательные статьи от Рикардо Нарвахи для понимания процесса импорта!:
1)http://www.wasm.ru/article.php?article=ollydbg33
2)http://www.wasm.ru/article.php?article=ollydbg34
1)http://www.wasm.ru/article.php?article=ollydbg33
2)http://www.wasm.ru/article.php?article=ollydbg34
ManHunter
(20.06.2011 в 01:12):
Vnv, добавил, спасибо!
Vnv
(08.06.2011 в 09:29):
ManHunter, UnpkT0l_1.5.rar - http://rghost.ru/9872771
ManHunter
(01.06.2011 в 22:53):
Isaev, Dependency Walker у меня есть, а вот UnpkT0l что-то не нашел. Залей куда-нибудь, если не сильно секретная тулза.
Isaev
(27.05.2011 в 23:34):
Хотелось бы добавить UnpkT0l v1.5 by Spirit
ну и старый добрый Dependency Walker тоже часто полезен бывает
ну и старый добрый Dependency Walker тоже часто полезен бывает
disciple27
(27.05.2011 в 15:36):
Ничего себе... Самые нужные инструменты :) ManHunter, спасибо огромное :)
ManHunter
(27.05.2011 в 15:35):
Обновил, спасибо. У автора UIF дурная привычка выпускать какие-то фиксы без изменения номера версии. За все время я насобирал уже штуки три билдов "1.2 Final", теперь вот еще одна добавилась :)
Vnv
(27.05.2011 в 15:31):
Отличная статья, отличный блог! Все, что нужно - собрано в одном месте с комментариями. 5 баллов!
Маленькая добавочка по Universal Import Fixer - на сайте автора релиз свежее, чем выложенный Вами: v1.2 FINAL update (2009.02.23)
Маленькая добавочка по Universal Import Fixer - на сайте автора релиз свежее, чем выложенный Вами: v1.2 FINAL update (2009.02.23)
Добавить комментарий
Заполните форму для добавления комментария
Кстати, есть новая версия Сциллы: https://github.com/NtQuery/Scy...a_v0.9.8.rar