Авторизируйтесь,
чтобы продолжить
Некоторые функции доступны только зарегистрированным пользователям
Неправильный логин или пароль
Добавить софт
Мой софт

PE Explorer - что прячется внутри исполняемого файла?

Автор: Илья Данилов
Опубликовано: 09.07.2008
Источник: SoftKey.info

"PE" означает Portable Executable – это формат исполняемых файлов, появившийся впервые в Windows NT и до сих пор используемый в последних версиях ОС Microsoft, в том числе в Windows Vista и даже в мобильном Windows CE.

Как можно догадаться из названия, PE Explorer предназначен для детального изучения содержимого PE-файлов. Перед тем как начать работу с какой-нибудь приглянувшейся программой, внимательно прочтите лицензию на ее использование: часто в процессе инсталляции вас заставляют согласиться с тем, что вы не будете пытаться декомпилировать или дизассемблировать устанавливаемые компоненты. Правда, поймать пользователя на этом довольно сложно: нужно либо стоять у него за спиной, либо дождаться, когда он начнет про это хвастать в своем блоге или публичном форуме.

Но иногда может случиться так, что лицензия будет совершенно не важна, поскольку предстоит копаться... в своей собственной программе! Представьте: есть компьютер заказчика, на котором установлена ваша программа, но ни ее исходных текстов, ни компилятора под рукой нет. И хотя PE Explorer часто рассматривают в качестве средства анализа вредоносного программного обеспечения или пораженных вирусами файлов, ее возможности вовсе не ограничиваются распаковщиком и дизассемблером. PE Explorer можно применять и для вполне "мирных" целей, будь то удаление отладочной информации или исправление опечатки в меню.

Пытливый пользователь первым делом попытается заставить PE Explorer проанализировать самого себя, но из этого ничего не выйдет: вам тактично сообщат, что при анализе структуры файла произошла ошибка, а дальнейший анализ невозможен. Это может случиться и с другими программами: скорее всего, проблема заключается в распаковщике.

Чтобы сэкономить место на диске и ускорить загрузку, исполняемый образ программы сжимается, а затем к нему добавляется распаковщик. Он получает управление сразу после запуска, распаковывает программу, а затем передает ей управление. Нередко упаковку сочетают с шифрованием, чтобы скрыть содержимое исполняемого файла от любопытных глаз. PE Explorer это не остановит, он умеет на лету распаковывать программы, сжатые популярными алгоритмами UPX и Upack, а также их несущественными модификациями. Распаковка происходит автоматически, вы даже не заметите, что файл был запакован или зашифрован.

Но вот файл все-таки загружен для анализа. Посмотрим, что сумеет сделать для нас PE Explorer.

Просмотр заголовков

Все начинается с заголовка файла. Из него можно узнать массу интересных подробностей:

PE Explorer: режим Headers Info

Например, поле Machine показывает, на каких платформах может быть запущен исполняемый файл, а Characteristics выдает важную стартовую информацию: является ли файл образом исполняемого файла или же это динамическая библиотека, сколько секций в нем присутствует, какова контрольная сумма. Изменить тут нельзя практически ничего, за исключением точки входа в главную процедуру и контрольной суммы. Но в принципе этого и не требуется: перед сохранением изменений PE Explorer перестроит заголовок согласно результатам редактирования.

Секции и директории

После основного заголовка может идти необязательный, который содержит список директорий данных. Каждая запись в таком списке поясняет, какой тип данных (например, таблица импорта или экспорта, ресурсы, сертификаты) занимает место по заданному смещению в файле:

PE Explorer: режим Data Directories

С другой стороны, файл содержит секции, которые можно просматривать через Sections Header Editor в виде списка сегментов:

PE Explorer: режим Section Headers

PE Explorer наглядно показывает, есть ли на секции ссылки из заголовка, какие из сегментов можно безболезненно удалить, а какие нельзя. Вы можете просмотреть содержимое выбранной секции (попутно переключаясь между представлениями HEX/ACSII и кодировками WIN/DOS) и даже попробовать поменять ее границы при помощи Section Editor:

PE Explorer: режим Section Editor

Таким образом, пользуясь этими функциями, можно удалить или заменить секцию (например, подменить раздел ресурсов), а PE Explorer поможет это сделать так, чтобы в итоге сохранилась правильная структура исполняемого PE-файла.

Сканер зависимостей

Наверное, у вас такое уже случалось: при попытке запустить программу появляется сообщение: "Не найдена динамическая библиотека xxxx.dll". Это означает, что программу скомпилировали и связали с этой динамической библиотекой, но по какой-то причине у вас в системе ее не обнаружилось.

Сканер зависимостей наглядно показывает, от каких библиотек зависит анализируемый файл:

PE Explorer: режим Dependency Scanner

Зависимости выстраиваются в виде дерева, и если одна динамическая библиотека зависит от другой, то это сразу видно. Из этого же режима просмотра можно при необходимости загрузить библиотеку в PE Explorer для более пристального изучения.

Просмотр экспортируемых и импортируемых функций

Знать о том, что приложение использует какую-то библиотеку, это только полдела. Получив информацию о том, какие именно функции из этой библиотеки используются, можно понять, представляет ли изучаемая программа потенциальную опасность для вашей системы. Полный список вызываемых функций можно получить через команду Import:

PE Explorer: режим Import Viewer

Выбирая конкретное имя функции вверху, вы можете видеть внизу синтаксическую строку вызова с осмысленными именами аргументов и соглашениями о вызове. Это вовсе не волшебство, а результат труда авторов PE Explorer, которые уже занесли в базу данных программы информацию о 39 библиотеках, в основном принадлежащих системной части Windows. Вы можете изменять их и добавлять свои собственные. По двойному клику вызывается редактор синтаксиса:

PE Explorer: Syntax Editor

Если есть необходимость, можно скопировать строку вызова из PE Explorer и вставить в исходный текст вашей программы на Delphi.

Редактор ресурсов

Все, что отображается на экране (окна, меню, рисунки и пиктограммы), хранится в исполняемом файле в виде "ресурсов":

PE Explorer: режим Resource Editor

Отмечу приятную возможность редактора ресурсов PE Explorer: любой ресурс можно запустить, что дает возможность увидеть его так, как если бы его активизировала сама программа. Часто трудно удержаться от соблазна использовать понравившиеся иконки или картинки в своих разработках, тем более что сделать это очень просто:

PE Explorer: Resource Editor, сохранение любого ресурса в файл

В системах Windows XP и Vista применяется новый способ работы с динамическими библиотеками DLL, так называемые "манифесты". Отныне файлы DLL аккуратно расположены в разных папках каталога WINDOWSwinsxs, что позволяет иметь в системе несколько версий одной и той же DLL одновременно. Чтобы приложение могло воспользоваться такой возможностью, оно должно обладать специальным типом ресурса Manifest, который содержит информацию в формате XML. PE Explorer обеспечивает его конструирование и добавление через специальный мастер, избавляющий от необходимости помнить схему документа:

PE Explorer: мастер добавления манифеста

Например, с помощью мастера можно добавить использование ComCtrl32.dll версии 6, и тогда элементы диалоговых окон обретут совершенно другой вид, копирующий текущую тему рабочего стола.

Дизассемблер

Основной упор в пользовательском интерфейсе дизассемблера сделан на удобство и скорость перемещения по листингу. Все необходимые операции уже вынесены в контекстное меню: переход по первому и второму операнду, возврат, поиск. Надо посмотреть, из каких мест кода вызывается процедура с заданным адресом? Нет проблем, по "горячей" клавише R выдается окно со списком.

PE Explorer: режим Disassembler

Плагины

Если вы все-таки столкнулись с тем, что анализ файла не начинается из-за неизвестного для PE Explorer упаковщика, есть возможность написать свой собственный плагин. Для этого надо изучить несложную схему API, закодировать распаковщик и откомпилировать его в виде DLL. Результат надо поместить в специальную папку PlugIns, и, если вы сделали все правильно, PE Explorer отобразит новый плагин в списке:

PE Explorer: список плагинов

Изменяя приоритет, можно добиться, чтобы плагины вызывались в нужной вам последовательности.

Подводя итог, отмечу, что PE Explorer одинаково дружественен к пользователю любой квалификации, прост и удобен в использовании. Однако если вам надо поменять пару байт в бинарном файле, то лучше поискать другую программу, например FlexHex Editor того же разработчика. Но если надо разобраться со структурой исполняемого файла, отредактировать ресурсы, изучить таблицы экспорта и импорта – PE Explorer содержит все необходимое. Инсталлятор PE Explorer удобно носить с собой на флешке – тогда швейцарский складной нож будет всегда у вас в кармане.



Статистика
Всего программ 28589
Скачиваний сегодня 608
Скачиваний вчера 1739