В данной статье мы подробно рассмотрим как осуществить полную декомпиляцию программ установки, созданных при помощи популярного средства — InnoSetup. На выходе мы получим всё содержимое архива, а также полный исходный код установщика.
Введение
В качестве примера мы будем осуществлять декомпиляцию нашего проекта SRC Repair, распространяющегося по лицензии GNU GPL v3, программа установки (далее «инсталлятор») которого собрана при помощи InnoSetup.
Загрузка компонентов
Для начала нам потребуется утилита Inno Setup Unpacker версии 0.40 (поддерживает все версии InnoSetup до 5.5.4 включительно). Загрузить её можно здесь. Распакуйте архив в любой каталог, например, C:iunp.
Также для разбора секции code, которая компилируется в бинарный файл, нам потребуется дизассемблер ROPS, который можно взять здесь. Распаковать его следует в тот же каталог.
Теперь скачаем SRC Repair последней версии по прямой ссылке.
Краткая справка по декомпилятору
Т.к. утилита InnoSetup Unpacker (далее просто «Unpacker») работает из командной строки, рассмотрим основные ключи:
Как декомпилировать .exe в .mfa?
В квадратных скобках указываются необязательные параметры. Единственным обязательным является имя файла инсталлятора, который мы будем декомпилировать.
Список допустимых команд утилиты innounp:
- -v — вывести список файлов архива (с размерами и датами создания/изменения);
- -x — распаковать файлы из архива в текущий каталог (допускается указать параметр -d для указания другого каталога назначения);
- -e — распаковать файлы в текущий каталог без соблюдения внутренней структуры каталогов;
- -t — запустить проверку целостности архива.
Список допустимых параметров утилиты innounp:
- -b — включает неинтерактивный режим. Рекомендуется для использования в скриптах;
- -q — подавляет вывод на экран прогресса извлечения файлов из архива;
- -m — осуществить глубокую декомпиляцию (при этом будут собраны деинсталляторы, а также извлечён бинарный файл секции code);
- -pPASS — задаёт пароль для архива (если он был им защищён);
- -dDIR — указывает каталог, в который будет распаковано содержимое архива (допускаются как абсолютные, так и относительные пути);
- -fFILE — то же, что и -p, но пароль считывается из указанного текстового файла;
- -a — включает обработку дублирующихся файлов внутри архива;
- -y — отвечает на все вопросы программы утвердительно (разрешение на перезапись файлов и т.д.).
Декомпиляция примера
- Откроем командную строку Windows (Пуск — Выполнить — cmd.exe).
- Перейдём в каталог, в который установили Unpacker (C:iunp):
cd /D «C:iunp»
innounp.exe -x -m -dout srcrepair_180_final.exe
Дизассемблирование файла CompiledCode.bin
- Снова откроем командную строку Windows.
- Перейдём в каталог, в который распаковали ROPS (C:iunp):
cd /D «C:iunp»
disasm.exe outembeddedCompiledCode.bin out.asm
Заключение
Таким образом, мы получили полное содержимое программы установки, собранной при помощи InnoSetup, включая её полные исходные коды.
13. Ломаем exe файл в поисках пароля.
28 commentaries to post
HemulGM :
Хорошая статья. Без лишних слов. Прочитал, понял и в течении двух минут закрепил на практике. Благодарю. (Хотя, кажется мне я поздновато её прочёл.)
Андрей :
Скрипты не распаковывает. Они все пустые.
К сожалению, проект уже не развивается и не может распаковывать установочные пакеты, созданные новейшей версией InnoSetup.
Распаковывает, только может с кодировкой начудить. Часть строк в UTF-8, часть в win-1251, так что после распаковки и доработки напильником действительно открывается корректно в InnoSetup GUI.
Зависит от того, в какой версии InnoSetup был собран оригинальный установщик: ANSI или Unicode. Самая актуальная версия InnoSetup 6 поддерживает только юникод.
Евгений :
Проканает только на старых версиях инно.
На 5.0+ стандартный криптор и почти все используют сторонние dll по дефолту.
Александр :
Хоть и статья 2014 но у меня вопрос как это дело после разбора собрать? У меня после дизассемблирования файла CompiledCode.bin инно не хочет принимать код выкидывает ошибку хоть я не очень понимаю куда его вставлять (вставлял туда и где весь другой код) но установщик был собран на старой версии 4.2.6 а на ней я вообще не понимаю как это дело все собрать так что пытался на 5.5.9. Просто хотел разобрать/собрать но не получилось
Александр :
То есть для обычного пользователя это не реально? А что нужно сделать с ним что бы скомпилировать заново? Или это делается так что бы посмотреть что и как?
Dmitry :
А не проще открыть инсталятор через 7-Zip?
т.е. для вас сообщаю что некоторые exe файлы можно открывать через zip архиваторы. (Насчет рара не знаю не пробовал) Через 7-Zip можно и получит исходный код программы НО иногда.
Не знаю точно но я находил исходный код установщика внутри него!
А так же можно изменять инфу о приложении по скольку это все хранится (по крайней мере у меня) в отдельных файликах.
И предупреждение. Некоторые разработчики знают о такой функции архиваторов и потому как они на exe файл как на архив ставят пароль. Просто так предупредил об этом.
Ну, может кому то понадобится…
Dmitry : А не проще открыть инсталятор через 7-Zip?
Далеко не все форматы установочных пакетов InnoSetup можно открыть в 7-Zip. Можете попробовать например описанный в статье пример с SRC Repair. Открыть его в 7-Zip даже последней версии невозможно.
Dmitry : т.е. для вас сообщаю что некоторые exe файлы можно открывать через zip архиваторы. (Насчет рара не знаю не пробовал)
Разумеется если это по сути SFX-архивы.
Dmitry : А так же можно изменять инфу о приложении по скольку это все хранится (по крайней мере у меня) в отдельных файликах.
Это хранится в ресурсе. Конечно же можно изменять при помощи редактора ресурсов.
Dmitry : И предупреждение. Некоторые разработчики знают о такой функции архиваторов и потому как они на exe файл как на архив ставят пароль. Просто так предупредил об этом.
Если на сам контейнер установлен пароль, то InnoSetup будет запрашивать его перед установкой, т.к. содержимое внутри зашифровано стойким алгоритмом AES-128. Описанная в статье утилита декомпилятор отлично умеет распаковывать и зашифрованные установочные пакеты если передать ей пароль в качестве параметра.
Источник: www.easycoding.org
Декомпиляция exe в python
Brem
Автор темы
Здравствуйте, помогите декомпилировать exe файл в python. Я новичок в программировании и плохо разбираюсь с кодом, а декомпилировать это вообще.. Помогите пожалуйста.
Файл не поместился, загрузил на дропми https://dropmefiles.com.ua/ru/X35hc2s
Последнее редактирование: 20 Фев 2022
invilso.
Активный
Здравствуйте, помоги декомпилировать exe файл в python. Я новичок в программировании и плохо разбираюсь с кодом, а декомпилировать это вообще.. Помогите пожалуйста.
Файл не поместился, загрузил на дропми https://dropmefiles.com.ua/ru/X35hc2s
Если exe был сделан с помощью PyInstaller, на stackoverflow уже отвечали на такой вопрос:
Как декомпилировать .exe в .py?
В общем, я писал небольшой скрипт для на python. Заказчик потребовал, чтобы был готовый exe, поэтому пришлось использовать Pyinstaller (с py2exe у меня выдавало ошибку). Проект выполнен и я решил
ru.stackoverflow.com
А если сделан с помощью py2exe:
How to decompile an exe file compiled by py2exe?
How to decompile an exe file compiled by py2exe? just one exe file, didn’n have any zip file. how to decompile to pyc or pyo file?
Источник: www.blast.hk
Декомпиляция EXE-файлов
Процесс декомпиляции отвечает за воссоздание исходного кода программы на языке или языках, на которых та была написана. В случае с большими программами, они имеют несколько файлов, в каждом из которых может использоваться несколько языков программирования. Чтобы они корректно взаимодействовали друг с другом и не вводили пользователя в тупик, их помещают в EXE-файл. Как раз этот процесс и называется компиляцией. Мы же рассмотрим, как разобрать EXE-файл на отдельные составляющие.
Как декомпилировать EXE-файл
К сожалению, Windows не предусматривает в своем инструментарии встроенных инструментов, позволяющих выполнить декомпиляцию, поэтому придется пользоваться только сторонним ПО. Такое ПО может быть полезно как пользователям, которые просто желают получше изучить исходный код той или иной программы, так и разработчикам.
Вариант 1: VB Decompiler
Корректно способен провести декомпиляцию EXE-файлов, написанных и скомпилированных через Visual Basic 5.0 и 6.0. Это самая популярная среда разработки программ для Windows. Сама программа полностью бесплатна и занимает на диске всего несколько мегабайт.
- В верхней части интерфейса кликните по пункту «Файл» и выберите из контекстного меню вариант «Открыть программу». Вместо этого можно воспользоваться сочетанием клавиш Ctrl+O.
- В «Проводнике» отыщите исполняемый файл той программы, декомпиляцию которой вы собираетесь провести. Выделите его и нажмите на кнопку «Открыть», чтобы выполнить загрузку файла в рабочую среду.
- Путь до нужного EXE-файла отобразится в строке «Файл». Нажмите на кнопку «Старт», чтобы запустить процедуру декомпиляции.
- Программа не оповещает о завершении процедуры декомпиляции. О завершении таковой будет свидетельствовать только надпись «Декомпилировано» в нижней левой части окна.
- Для сохранения декомпилированного файла нажмите по кнопке «Файл» в верхнем меню и выберите из выпадающего списка вариант «Сохранить декомпилированный проект». Можете просто воспользоваться сочетанием клавиш Ctrl+S.