Распаковываем Perl-скрипты, обработанные PerlApp

Как известно, для Perl, впрочем, как и для других скриптовых языков, существуют утилиты, позволяющие создавать из скрипта полноценный exe-файл, который можно переносить на другие компьютеры и запускать, даже если интерпретатор языка на них не установлен. В случае с perl'ом наиболее популярными утилитами являются Perl2Exe и PerlApp.
Принцип работы этих утилит довольно прост и состоит в упаковке внутрь результирующего exe-файла библиотеки перла, основного скрипта и зависимых модулей. Содержимое, естественно, сжимается, шифруется (с помощью XOR) и не хранится в открытом виде внутри файла. Исследуем чуть подробнее внутреннее устройство результирующих exe-файлов, которые получаются с помощью PerlApp.
Для начала, определим с помощью чего сжимаются данные. Это сделать довольно просто, например, с помощью PeID (с плагином Krypto Analyzer) или какого-нибудь hex-редактора. В случае с PeID все тривиально: указываем путь к файлу, запускаем плагин и получаем список найденных крипто-сигнатур.

С hex-редактором тоже просто: открываем нужный файл, нажимаем Alt+F6 (справедливо для Hiew), получаем список строковых ресурсов, гуглим эти строки.

Таким образом определяем, что для сжатия используется библиотека zlib, причем довольно старая версия - 1.1.4. Конечно, можно начать искать, где именно в файле хранятся сжатые данные, но мне захотелось пойти другим путем.
Читать далее «Распаковываем Perl-скрипты, обработанные PerlApp»