Декомпилируем инсталляторы InnoSetup. Автоматические распаковщики инсталляторов Как пользоватся программой dragon unpacker


Изменения в версии 5.7.0

i Updated licence to MPL 2.0 (from MPL 1.1).
! Added extra check in the extraction routine to avoid going past the end of
file.
! Fixed many memory leaks (thanks to FastMM!).
! Fixed create list feature (macros can be upper-case or lower-case).
* Changed macros in the DUP4 HTML template (v1.2) for lists to upper-case
anyway to be consistent.
* Re-factored the TDrivers class to stop using pointers replaced by dynamic
arrays. Will be easier to maintain and less prone to errors.
Also introduced DUDI v6 that uses a callback function every time an entry
needs to be added. This is completely different than DUDI v5 were the core
program calls the plug-in function for all found entries.
Both the old DUDI v1-v5 & v6 methods are supported by Dragon UnPACKer
5.7.0+.
New directory cache should be as fast (if not faster) than the old one.
Note: Only main & ZIP driver were adapted to DUDI v6.
+ Added FastCode & FastMove.
http://fastcode.sourceforge.net/
! Fixed support for multiple convert plug-ins during preview.
* Re-factored how TDrivers & TPlugins were global variables, now properties
of the main form. Both don"t access directly main form components any more
and go through a wrapper command class.
* Completely revamped the logging features.
There might still be some places were it misbehaves.
+ Revamped the old "Look" functionality to a much easier to maintain and
modify "Theme" (files in a folder for the moment).
Not really nice with Delphi 7 but should pave the way to Lazarus.
+ Added chained conversion from plug-ins to internal Vampyre Imaging Library.
This allows for the plug-ins to just convert to .DDS for example and the
chaining will also propose BMP, PNG and TGA with no additional work from
the plug-in.
+ Added direct internal Vampyre Imaging Library convertion of compatible
files. For ex: .DDS to .BMP/.PNG/.TGA.
! Fixed the SetPercent callback function that was refreshing the component
on every call, now it will refresh only if the value changed...
This resulted in tremendous speed up for the loading of some formats, for
ex: POD5 loading in previous version: ~17sec now: ~7sec.
i HyperRipper v5.6b:
! Fixed the sanity check on the BIK searching algorithm.
Should avoid some false-positives.
! Fixed the memory leak for not freeing the TBufferedFS component:
Switched back to using THandleStream instead of TBufferedFS.
Free THandleStream but keep handle open and pass it to TDrivers.
* Elbereth"s ZIP Driver plug-in v2.0.0 Beta 1:

UnPACKer versions.
* Changed to use Abbrevia instead of Info-Zip UnZip32.dll.
* Elbereth"s Main Driver plug-in v3.0.1 Beta 4:
* Updated to new DUDI v6. This means as of this version the plug-in
requires Dragon UnPACKer v5.7.0 or more. It won"t work with older Dragon
UnPACKer versions.
+ Added support for Aliens vs. Predator (2010) .ASR file format.
Actually support for both uncompressed & compressed Asura files.
Almost all files in the game use those formats (.EN/.GUI/etc..).
If you have smart format activated (which you should) it will load them
automatically.
Please note the compressed Asura files are slow to load & to extract from
but there is nothing I can do (the format is not foreseen for random read
access).
+ Added support for Star Wars Starfighter .PAK file format.
Feature request #89 by James Krayenhagen.
+ Added support for The 7th Guest .GJD file format.
(This never worked in drv_11th...)
+ Added support for The 11th Hour .GJD file format.
(No activation needed)
* Added sanity checks to Terminal Velocity .POD format.
- Removed Elbereth"s The 11th Hour Driver plug-in.
Not needed anymore, features merged in drv_default v3.0.1 Beta 3.
* Duppi v3.4.0:
i Updated to work with Indy 9 instead of Curl.
This means a full Delphi implementation with no need for DLLs.
It is also compatible with Lazarus (Indy 9 & 10 were ported to Lazarus).
i Now compiled with FastMM4, FastCode & FastMove.
+ Default Conversion plug-in v2.2.1:
+ Added Ghostbusters: The Video Game .TEX to .DDS
Based on Ghostbusters texture converter C++ code by Jonathan Wilson
Published in 2010.
i Thanks Paul (from spookcentral.tk/) for the

Назначение программ для распаковки инсталляторов понятно. В настоящее время инсталляторы сами представляют собой достаточно сложные программы, вносящие изменения в систему или реестр, создающие ярлыки, записывающие файлы в различные папки. Но иногда инсталляторы выполняют нежелательные действия, например, пытаются без ведома пользователя установить различные тулбары или рекламные модули, отправляют разработчику информацию о факте установки, не дают выполнить установку без ввода пароля или серийного номера, и прочие гадости. В этом случае нам требуется извлечь из дистрибутива все содержащиеся в нем файлы, не запуская сам инсталлятор. Кроме файлов из некоторых инсталляторов можно извлечь так называемые скрипты установки, в которых прописывается последовательность действий, из них можно узнать какие ключи реестра меняются, какие файлы и куда записываются и т.п. Также извлеченные из инсталляторов скрипты можно в дальнейшем использовать для создания перепакованных вариантов программ, например, уже включающие в себя файлы с отломанной регистрацией. Еще некоторые особо одаренные аффтары проверяют целостность ранее установленной программы и не дают устанавливать обновления на модифицированные инсталляции, в основном такие милые приколы встречаются на играх. Так что умение бороться с инсталляторами всегда пригодится.

Самым мощным и удобным инструментом для автоматической распаковки инсталляторов является программа Universal Extractor . Она представляет собой оболочку для других распаковщиков, всего поддерживается несколько десятков различных форматов , в том числе таких популярных, как распаковка Inno Setup, InstallShield, Wise Installer и других. Поддерживается русский язык, интеграция в контекстное меню Проводника Windows, продвинутые пользователи могут сохранить и посмотреть лог работы внешних модулей распаковки. На момент написания статьи хостинг с дистрибутивами и исходниками Universal Extractor недоступен, поэтому выложу Universal Extractor здесь.

Теперь переходим к специализированным распаковщиками, ориентированным на конкретный тип инсталляторов. Наиболее мощный и популярный инструмент для создания инсталляторов - бесплатный Inno Setup , он обладает скриптовым языком, позволяющим делать практически неограниченные по опциям дистрибутивы.



, распаковщик инсталляторов Inno Setup версий от 2.0.8 до 5.3.11. Inno Setup Unpacker - консольная утилита, поэтому для удобства работы сделано несколько графических оболочек, например, (русскую версию можно найти на сайте MSILab) или InnoSetup And NSIS Unpacker Shell (требует 7zip и innounp).

InnoSetup.And.NSIS.Unpacker.Shell.1.4.zip (660,484 bytes)




Вспомогательная утилита InnoCry предназначена для обхода паролей на инсталляторах, созданных Inno Setup. Запускаете сперва инсталлятор, в котором требуется ввод пароля, параллельно запускаете InnoCry. Затем InnoCry несколькими способами пытается пропатчить в памяти исполняемый код инсталлятора, чтобы он не требовал ввода пароля. В последней версии также появилась опция активации заблокированных кнопок.

InnoCry.1.2.7.zip (238,909 bytes)




InnoExtractor сделан на базе архиватора 7zip. Позволяет просматривать и извлекать содержимое инсталляторов Inno Setup. Большой плюс в том, что InnoExtractor постоянно совершенствуется и поддерживает как старые, так и новейшие версии этого инсталлятора.

InnoExtractor.4.8.0.156.zip (1,693,514 bytes)




Для распаковки инсталляторов, созданных при помощи или сокращенно NSIS , удобнее всего пользоваться бесплатным архиватором 7zip . Он без труда открывает такие инсталляторы для просмотра и позволяет извлекать из них нужные файлы.

Консольная утилита для извлечения файлов из WISE-инсталляторов . Поддерживаются практически все версии Wise-инсталляторов, в комплекте есть версии распаковщика для DOS, Windows и Linux, а также документация на английском и немецком языках.

E_WISE.2002.03.29.zip (102,968 bytes)


E_WISE.2002.07.01.zip (24,686 bytes)




HWUN (Heuristic Wise UNpacker) также предназначен для распаковки инсталляторов WISE, но в отличие от предыдущей программы использует эвристические алгоритмы для поиска необходимых сигнатур и данных, так что есть большая вероятность, что он будет работать и с более новыми версиями инсталляторов.

HWUN.v0.50a.zip (22,912 bytes)


HWUN.v0.50b.zip (40,509 bytes)


- консольный распаковщик инсталляторов Setup Factory версии 5 и 6. Как признается сам автор, имеют место быть глюки и баги, так что пригодится больше для коллекции.

Setup.Factory.Unpacker.zip (27,161 bytes)




InstallShield (by one exe-file) Unpacker - автоматический консольный распаковщик двух из трех известных типов инсталляторов, созданных программой InstallShield . Это одиночный cab-файл, упакованный в msi-контейнер, а также набор из установочных файлов и cab-архива, также помещенный внутрь msi-файла (Microsoft Installer). Третий тип, использующий шифрование, этим распаковщиком не поддерживается.

InstallShield.Unpacker.0.99.zip (57,056 bytes)


В данной статье мы подробно рассмотрим как осуществить полную декомпиляцию программ установки, созданных при помощи популярного средства — InnoSetup. На выходе мы получим всё содержимое архива, а также полный исходный код установщика.

Введение

В качестве примера мы будем осуществлять декомпиляцию нашего проекта , распространяющегося по лицензии GNU GPL v3, программа установки (далее «инсталлятор») которого собрана при помощи InnoSetup.

Загрузка компонентов

Для начала нам потребуется утилита версии 0.40 (поддерживает все версии InnoSetup до 5.5.4 включительно). Загрузить её можно . Распакуйте архив в любой каталог, например, C:\iunp\ .

Также для разбора секции code , которая компилируется в бинарный файл, нам потребуется дизассемблер ROPS , который можно взять . Распаковать его следует в тот же каталог.

Теперь скачаем SRC Repair последней версии по .

Краткая справка по декомпилятору

Innounp.exe [команды] [параметры] <имя_установщика.exe> [@список_файлов] [маска]

В квадратных скобках указываются необязательные параметры. Единственным обязательным является имя файла инсталлятора, который мы будем декомпилировать.

Список допустимых команд утилиты innounp:

  • -v — вывести список файлов архива (с размерами и датами создания/изменения);
  • -x — распаковать файлы из архива в текущий каталог (допускается указать параметр -d для указания другого каталога назначения);
  • -e — распаковать файлы в текущий каталог без соблюдения внутренней структуры каталогов;
  • -t — запустить проверку целостности архива.

Список допустимых параметров утилиты innounp:

  • -b — включает неинтерактивный режим. Рекомендуется для использования в скриптах;
  • -q — подавляет вывод на экран прогресса извлечения файлов из архива;
  • -m — осуществить глубокую декомпиляцию (при этом будут собраны деинсталляторы, а также извлечён бинарный файл секции code);
  • -pPASS — задаёт пароль для архива (если он был им защищён);
  • -dDIR — указывает каталог, в который будет распаковано содержимое архива (допускаются как абсолютные, так и относительные пути);
  • -fFILE — то же, что и -p, но пароль считывается из указанного текстового файла;
  • -a — включает обработку дублирующихся файлов внутри архива;
  • -y — отвечает на все вопросы программы утвердительно (разрешение на перезапись файлов и т.д.).

Декомпиляция примера

  1. Откроем командную строку Windows (Пуск Выполнить cmd.exe ).
  2. Перейдём в каталог, в который установили Unpacker (C:\iunp\ ): cd /D "C:\iunp\"
  3. Скопируем в этот же каталог установщик, который будем декомпилировать (в нашем случае это SRC Repair).
  4. Выполним в консоли команду: innounp.exe -x -m -dout srcrepair_180_final.exe
  5. В случае успеха в каталоге C:\iunp\out\ мы найдём всё содержимое установщика, а также файл с расширением *.iss , который является полным исходным кодом модуля установки (включая комментарии).
  6. Если в скрипте установки были вставки кода, то в каталоге C:\iunp\out\embedded\ будет находиться бинарный файл CompiledCode.bin , который содержит его в скомпилированном виде.

Дизассемблирование файла CompiledCode.bin

  1. Снова откроем командную строку Windows.
  2. Перейдём в каталог, в который распаковали ROPS (C:\iunp\ ): cd /D "C:\iunp\"
  3. Выполним в консоли команду: disasm.exe out\embedded\CompiledCode.bin out.asm
  4. В файле C:\iunp\out.asm мы найдём дизассемблированный код.

Заключение

Таким образом, мы получили полное содержимое программы установки, собранной при помощи InnoSetup, включая её полные исходные коды.







2024 © gtavrl.ru.