///////////////////////////////////////////////////////////////////////////// /////////// /////// ////////// /// /// /// /// ///////// /// /// ///////// //////// ///////// /// /// //// /// /// /// /// /// /// /// ///////// //////// /// /// /// / /// ///// /// ///// ////////// /////// /// /// /// //// /// /// /// /// /// /// /////////// ////// ///////// /// /// ///////// /// /// ///////// //////////// ///// ///////////// ///////////////////////////////////////////////////////////////////////////// Универсальный COM/EXE распаковщик UNEXE v1.0. Краткое руководство. Введение. UNEXE предназначен для автоматической распаковки исполняемых .EXE и .COM файлов, а также в ряде случаев может быть использован для сня- тия всяческих intro-модулей (типа заставок) и пристыковочных механиз- мов защит от отладчиков (типа DLOCK) c исполняемых файлов. В основном, конечно, UNEXE предназначен для использования людьми, хорошо представляющих себе, что такое упаковка EXE/COM файлов, и для чего ее надо иной раз снимать. Однако, с помощью некоторых несложных манипуляций, как уже было сказано, можно снимать с программ "навешен- ные" кем-то заставки, которые порой очень надоедают и занимают (при наличии в них графики) не один десяток килобайт. Пример тому - игры PREHISTORIC-2, переведенный в Ростове Larry-1 и т.д. UNEXE поддерживает два различных режима распаковки: обычный, с помощью трассировки (режим 1), и режим, основанный на "знании" распа- ковщиком конкретных компиляторов (режим 2). С помощью последнего мож- но, зная или предполагая, что программа написана на языке высокого уровня, типа C/C++, Pascal, задав опцию "-c" (см. ниже), почти мгно- венно распаковать файлы, которые не поддаются распаковке с помощью ре- жима 1. Так, в режиме 2 распаковывается программа PV.EXE немецкой вер- сии. UNEXE поддерживает работу с компиляторами фирм Borland (C/C++, Pascal), а также Microsoft C/C++. Как показывает опыт, программы пи- шутся либо на C/C++, либо на Pascal'e указанных фирм, либо на WATCOM C/C++, но эти программы, как правило, не упаковываются, а также на ас- семблере, но, увы, программу на ассемблере придется распаковывать с помощью режима 1. Методы использования. Запуск UNEXE осуществляется из командной строки, в которой необ- ходимо указать полное имя упакованного файла, а также необязательные параметры и необязательное имя выходного файла. В случае отсутствия в командной строке имени выходного файла, в качестве такового берется имя входного файла, дополненное спереди символом "_". Общий формат запуска и краткую информацию о параметрах-ключах можно увидеть, запустив UNEXE без параметров командной строки: Формат запуска: UNEXE [options] [outfile.ext] Где "options" представляют собой набор из следующих ключей: "-d" - используется для получения более детальной информации о процессе распаковки: временные файлы не удаляются, на экран выводится информация о значениях сегментных регис- тров, адреса текущего PSP и т.д. "-с" - включение режима распаковки 2 (см. выше). "-h" - извлечение из исходного файла информации, содержащейся в заголовке EXE файла и сохранение ее в выходном файле (см. далее). "-r" - восстановление начальных параметров. "-w" - запись текущих параметров как параметров по умолчанию. "-o" - не удалять временный файл с оверлейными данными. /ПРИМЕЧАНИЕ: оверлейными (OVL) данными в дальнейшем бу- дем называть то, что находится за пределами размера EXE файла, вычисленного с помощью заголовка EXE./ Некоторая информация для хакеров. UNEXE поддерживает OVL структуры, которые переносятся из исходно- го файла в результирующий. При обнаружении таковых он спросит подтвер- ждение на продолжение, и, если работа продолжается, то Вам надо будет выбрать: писать OVL или нет в распакованный файл. OVL данные будут до- бавлены в конец результирующего файла по следующему алгоритму: - если на запрос о страничном выравнивании был дан отрицательный ответ, или размер страницы указан равным 1, то OVL будет допи- сан в конец результирующего файла, что обычно и требуется. - если было выбрано страничное выравнивание, то OVL данные извле- каются из исходника и пишутся в распакованный файл по адресам, кратным указанному размеру страницы. Этот режим был введен пос- ле попытки распаковать программу BLASTER MASTER v6.0 1994 (unregistered), где оверлеи находятся по адресам, кратным 200h. При попытке распаковать файл, у которого сегмент точки входа ра- вен PSP программы и ДОС выполняется в HMA, возможно зависание при вы- полнении функции EXEC, о чем будет выдано соответствующее предупрежде- ние. Если файл более 64k, то, возможно, ничего страшного не случится, в противном случае следует перезагрузить компьютер так, чтобы ДОС был в low-memory, после чего попытаться еще раз. Общие рекомендации. По умолчанию UNEXE использует режим распаковки 1, т.к. в "класси- ческом" варианте упаковки стандартными средствами сжатия исполняемых файлов этот режим работает надежно и может быть порекомендован как стандартное средство декомпрессии. Однако, в ряде случаев, как уже упоминалось выше, с помощью трассировки невозможно распаковать файл, если в нем присутствуют меры борьбы с отладчиком. В этом случае необ- ходимо попытаться применить режим 2. Режим 2 гораздо более быстр, не- жели 1, но распакованные файлы часто длиннее, чем те, что получены в результате работы режима 1. Так что право выбора, естественно, остает- ся за пользователем. Если программа после распаковки пишет, что она не может найти оверлеи или конфигурация неправильна или не присутствуют какие-либо компоненты программы, то следует провести более детальное исследова- ние причин этого. Об оверлеях было сказано выше, а вот во втором слу- чае может оказаться, что в заголовке исходного файла находятся данные, идентифицирующие программу, и/или записи о текущей конфигурации. В этом случае распаковку надо проводить с ключом "-h", который укажет UNEXE на необходимость корректного переноса информации из неиспользуе- мой области заголовка исходного упакованного файла в результирующий. Примером такой программы может служить универсальный проигрыватель музыкальных файлов INERTIA PLAYER. Несколько слов о защите. UNEXE нельзя переименовывать, модифицировать, а также файл UNEXE.EXE должен находиться в текущей директории. UNEXE не может быть распакован с помощью стандартных методов, описанных выше. Фролов Андрей Леонидович (FALinc), 1997. http://www.chat.ru/~falinc mailto: falinc@yahoo.com