Декомпиляция apk-файла на андроид

Содержание:

Декомпиляция приложений и её функции

Один из языков программирования, который используется при написании программ для ОС Android – Java. На нём, как правило, пишут программы новички и люди, которые привыкли к его инструментарию. Крупные разработчики используют другие языки, которые дают больше свободы в использовании сторонних библиотек или программных компонентов.

Для того, чтобы написанный код превратился работающее приложение, его нужно скомпилировать встроенным в SDK (Software Development Kit) компилятором. Обратный же процесс, когда из готового APK-файла получается программный код, называется декомпиляцией.

Для чего может понадобиться декомпилировать такие файлы? Есть несколько ситуаций, в которых это пригодится:

  1. Пользователю недостаточно предоставленного функционала и он обладает достаточными знаниями и опытом, чтобы вносить изменения в готовый код.
  2. Посмотреть, как работает определённый компонент программы и приобрести нужный опыт в его реализации при создании собственного продукта.
  3. Определить, используются ли в приложении какие-либо части вредоносного кода.

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

Automated TeamCity Builds

Our TeamCity servers are continuously generating up-to-date RetDec packages from the latest commit in the branch. These are mostly meant to be used by RetDec developers, contributors, and other people experimenting with the product (e.g. testing if an issue present in the official release still exists in the current ).

You can use these as you wish, but keep in mind that there are no guarantees they will work on your system (especially the Linux version), and that regressions are a possibility. To get a stable RetDec version, either download the latest official pre-built package or build the latest RetDec version tag.

Build in Docker

Docker support is maintained by community. If something does not work for you or if you have suggestions for improvements, open an issue or PR.

Build Image

Building in Docker does not require installation of the required libraries locally. This is a good option for trying out RetDec without setting up the whole build toolchain.

To build the RetDec Docker image, run

This builds the image from the master branch of this repository.

To build the image using the local copy of the repository, use the development Dockerfile, :

Run Container

If your is not 1000, make sure that the directory containing your input binary files is accessible for RetDec:

Now, you can run the decompiler inside a container:

Note: Do not modify the part is. You only need to change . Output files will then be generated to .

decompiler

Главная / Инструменты / decompiler

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

Всего: 28

Имя Версия Описание Категория Веб-сайт
avaloniailspy 193.0bff746 .NET Decompiler (port of ILSpy) decompiler
beebug 25.cddb375 Это инструмент, который можно использовать для проверки возможности эксплуатации сбоя программы. decompiler disassembler reversing
cafebabe 0.1.2 Java bytecode editor & decompiler. decompiler reversing
cfr 150 Ещё один Java декомпилятор. decompiler
dnspy 6.1.7 .NET debugger and assembly editor. windows decompiler binary reversing
dotpeek 2020.2.1 Free .NET Decompiler and Assembly Browser. windows decompiler binary reversing
fernflower 485.e19aab6 Аналитический декомпилятор для Java. decompiler
ffdec 11.0.0 Открытый декомпилятор и редактор Flash SWF. decompiler binary misc
flasm 1.62 Дизассемблер для байт-кода SWF. reversing decompiler
gadgetinspector 6.ac7832d A byte code analyzer for finding deserialization gadget chains in Java applications. decompiler binary
hopper 4.5.29 Reverse engineering tool that lets you disassemble, decompile and debug your applications. reversing disassembler decompiler binary
iaito 5.2.0 Qt and C++ GUI for radare2 reverse engineering framework reversing decompiler disassembler debugger
jadx 1.2.0 Инструменты командной строки и с графическим интерфейсом для создания исходного кода Java из файлов Android Dex и APK. decompiler reversing
jd-cli 1.1.0 Command line Java Decompiler. decompiler reversing
jd-gui 1.6.6 Автономная графическая утилита, которая отображает исходные коды Java файлов .class. decompiler reversing
jpexs-decompiler 12.0.1 JPEXS бесплатный декомпилятор Flash. decompiler
justdecompile 22018 The decompilation engine of JustDecompile. windows decompiler binary reversing
luyten 0.5.4 Графический интерфейс с открытым исходным кодом декомпилятора Java для Procyon. decompiler misc
pcode2code 4.4de2193 VBA p-code decompiler. decompiler
procyon 0.5.36 Набор на Java инструментов метапрограммирования, сфокусированных на генерации кода и анализе. decompiler code-audit
python-uncompyle6 3.7.4 Декомпилятор между различными версиями Python. decompiler
r2cutter 1:1.12.0 Qt and C++ GUI for radare2 reverse engineering framework reversing decompiler disassembler debugger
r2ghidra 5.2.0 Deep ghidra decompiler integration for radare2 and r2cutter reversing decompiler disassembler debugger
radare2-cutter 1:1.12.0 Графический интерфейс на Qt и C++ для radare2 — платформы обратной инженерии. decompiler reversing disassembler debugger
recaf 2.18.3.2136.419925d9 Современный редактор байткоода Java. decompiler reversing
recstudio 4.1 Кроссплатформенный интерактивный декомпилятор. decompiler reversing
retdec 1919.b2079307 Перенаправляемый декомпилятор машинного кода, базируется на LLVM. decompiler reversing
snowman 0.1.3 Нативный (родной) декомпилятор C/C++. windows decompiler

Legality

The majority of computer programs are covered by copyright laws. Although the precise scope of what is covered by copyright differs from region to region, copyright law generally provides the author (the programmer(s) or employer) with a collection of exclusive rights to the program. These rights include the right to make copies, including copies made into the computer’s RAM.[] Since the decompilation process involves making multiple such copies, it is generally prohibited without the authorization of the copyright holder. However, because decompilation is often a necessary step in achieving software interoperability, copyright laws in both the United States and Europe permit decompilation to a limited extent.

In the United States, the copyright fair use defense has been successfully invoked in decompilation cases. For example, in Sega v. Accolade, the court held that Accolade could lawfully engage in decompilation in order to circumvent the software locking mechanism used by Sega’s game consoles.

In Europe, the 1991 Software Directive explicitly provides for a right to decompile in order to achieve interoperability. The result of a heated debate between, on the one side, software protectionists, and, on the other, academics as well as independent software developers, Article 6 permits decompilation only if a number of conditions are met:

  • First, a person or entity must have a license to use the program to be decompiled.
  • Second, decompilation must be necessary to achieve interoperability with the target program or other programs. Interoperability information should therefore not be readily available, such as through manuals or API documentation. This is an important limitation. The necessity must be proven by the decompiler. The purpose of this important limitation is primarily to provide an incentive for developers to document and disclose their products’ interoperability information.
  • Third, the decompilation process must, if possible, be confined to the parts of the target program relevant to interoperability. Since one of the purposes of decompilation is to gain an understanding of the program structure, this third limitation may be difficult to meet. Again, the burden of proof is on the decompiler.

In addition, Article 6 prescribes that the information obtained through decompilation may not be used for other purposes and that it may not be given to others.

Overall, the decompilation right provided by Article 6 codifies what is claimed to be common practice in the software industry. Few European lawsuits are known to have emerged from the decompilation right. This could be interpreted as meaning either one of two things: 1) the decompilation right is not used frequently and the decompilation right may therefore have been unnecessary, or 2) the decompilation right functions well and provides sufficient legal certainty not to give rise to legal disputes. In a recent report regarding implementation of the Software Directive by the European member states, the European Commission seems to support the second interpretation.

References

  1. Miecznikowski, Jerome; Hendren, Laurie (2002). «Decompiling Java Bytecode: Problems, Traps and Pitfalls». In R Nigel Horspool. Compiler Construction: 11th International Conference, proceedings / CC 2002. Springer-Verlag. pp. 111–127. ISBN 3-540-43369-4.
  2. Mycroft, Alan (1999). «Type-Based Decompilation». In S. Doaitse Swierstra. Programming languages and systems: 8th European Symposium on Programming Languages and Systems. Springer-Verlag. pp. 208–223. ISBN 3-540-65699-5.
  3. Rowland, Diane (2005). Informtion technology law (3rd ed.). Cavendish. ISBN 1-85941-756-6.
  4. B. Czarnota and R.J. Hart, Legal protection of computer programs in Europe: a guide to the EC directive. 1991, London: Butterworths.

Source code

Branches

Git source control manager supports multiple code branches. We use two main branches.

  • — for released «stable» versions
  • — for newest changes from developers — «nightly» version is released from this branch

You can switch to branch with following git command:

Ant

If you do not have Netbeans, you can build source code also with Apache Ant.
After installing Ant it is good to put it into your PATH variable.
Open up commandline and navigate to sources directory.
To run application, execute task «run» by entering this command:

To only build, execute build task:

For creating EXE, Installer and ZIP version, there exist Ant tasks «exe»,»installer»,»release». These tasks require additional software installed:

You must configure installation path of these tools in tools.properties file, which could look like this for windows:

Building libraries

There are few libraries which need to be built too. These libraries are placed in «libsrc» directory.

  • FFDec_lib — core of decompilation, SWF parsing, exporting
    This library is built automatically with main project, but can be build also separately with its own Ant script.
  • jpacker — used for compression of JavaScript Canvas scripts (Netbeans/Ant project)
  • jpproxy — proxy part of FFDec (Netbeans/Ant project)
  • jsyntaxpane — code editor (Netbeans/Apache Maven project)
  • LZMA — used for SWF compression (Netbeans/Ant project)
  • nellymoser — used for Nelly Moser sounds decoding (Netbeans/Ant project)
  • Swf2Exe — Stub for «Save to EXE» feature (Delphi 7 Project)
  • ttf — used for TTF font export (Netbeans/Ant project)
  • gnujpdf — used for PDF export (Netbeans/Ant project)

decompiler

Home / Tools / decompiler

Packages that attempt to reverse a compiled program into source code.

Tool count: 28

Name Version Description Category Website
avaloniailspy 193.0bff746 .NET Decompiler (port of ILSpy) decompiler
beebug 25.cddb375 A tool for checking exploitability. decompiler disassembler reversing
cafebabe 0.1.2 Java bytecode editor & decompiler. decompiler reversing
cfr 150 Another Java decompiler. decompiler
dnspy 6.1.7 .NET debugger and assembly editor. windows decompiler binary reversing
dotpeek 2020.2.1 Free .NET Decompiler and Assembly Browser. windows decompiler binary reversing
fernflower 485.e19aab6 An analytical decompiler for Java. decompiler
ffdec 11.0.0 Open source Flash SWF decompiler and editor. decompiler binary misc
flasm 1.62 Disassembler tool for SWF bytecode reversing decompiler
gadgetinspector 6.ac7832d A byte code analyzer for finding deserialization gadget chains in Java applications. decompiler binary
hopper 4.5.29 Reverse engineering tool that lets you disassemble, decompile and debug your applications. reversing disassembler decompiler binary
iaito 5.2.0 Qt and C++ GUI for radare2 reverse engineering framework reversing decompiler disassembler debugger
jadx 1.2.0 Command line and GUI tools to produce Java source code from Android Dex and APK files decompiler reversing
jd-cli 1.1.0 Command line Java Decompiler. decompiler reversing
jd-gui 1.6.6 A standalone graphical utility that displays Java source codes of .class files. decompiler reversing
jpexs-decompiler 12.0.1 JPEXS Free Flash Decompiler. decompiler
justdecompile 22018 The decompilation engine of JustDecompile. windows decompiler binary reversing
luyten 0.5.4 An Open Source Java Decompiler Gui for Procyon. decompiler misc
pcode2code 4.4de2193 VBA p-code decompiler. decompiler
procyon 0.5.36 A suite of Java metaprogramming tools focused on code generation and analysis. decompiler code-audit
python-uncompyle6 3.7.4 A Python cross-version decompiler. decompiler
r2cutter 1:1.12.0 Qt and C++ GUI for radare2 reverse engineering framework reversing decompiler disassembler debugger
r2ghidra 5.2.0 Deep ghidra decompiler integration for radare2 and r2cutter reversing decompiler disassembler debugger
radare2-cutter 1:1.12.0 Qt and C++ GUI for radare2 reverse engineering framework. decompiler reversing disassembler debugger
recaf 2.18.3.2136.419925d9 Modern Java bytecode editor. decompiler reversing
recstudio 4.1 Cross platform interactive decompiler decompiler reversing
retdec 1919.b2079307 Retargetable machine-code decompiler based on LLVM. decompiler reversing
snowman 0.1.3 A native code to C/C++ decompiler, see the examples of generated code. windows decompiler

Licenses + Acknowledgments

Application

FFDec Application is licensed with GNU GPL v3, see the license.txt.
It uses modified code of these libraries:

And links also these libraries:

  • Java Native Access — JNA (Registry association, Process memory reading) — LGPL
  • javactivex (Flash Player ActiveX embedding) — LGPLv3
  • flashdebugger library (Debugging ActionScript) — LGPLv3
  • FFDec Library (LGPLv3) — see below

Library

FFDec Library is licensed with GNU LGPL v3, see license.txt for details.
It uses modified code of these libraries:

  • UAB «DKD» NellyMoser ASAO codec (Decoding Nelly Moser sound format) — LGPL

And links also these libraries:

Файл spec

Файл spec — это первый файл, который PyInstaller создает, чтобы закодировать содержимое скрипта Python вместе с параметрами, переданными при запуске.

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

Файл с расширением .spec сохраняется по умолчанию в текущей директории.

Если у вас есть какое-либо из нижеперечисленных требований, то вы можете изменить файл спецификации:

  • Собрать в один бандл с исполняемым файлы данных.
  • Включить другие исполняемые файлы: .dll или .so.
  • С помощью библиотек собрать в один бандл несколько программы.

Например, есть скрипт simpleModel.py, который использует TensorFlow и выводит номер версии этой библиотеки.

Копировать

Компилируем модель с помощью PyInstaller:

После успешной компиляции запускаем исполняемый файл, который возвращает следующую ошибку.

Исправим ее, обновив файл spec. Одно из решений — создать файл spec.

Команда pyi-makespec создает spec-файл по умолчанию, содержащий все параметры, которые можно указать в командной строке. Файл simpleModel.spec создается в текущей директории.

Поскольку был использован параметр , то внутри файла будет только раздел exe.

Если использовать параметр по умолчанию или onedir, то вместе с exe-разделом будет также и раздел collect.

Можно открыть simpleModel.spec и добавить следующий текст для создания хуков.

Создаем хуки и добавляем их в hidden imports и раздел данных.

Подсистема «Показатели объектов»

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

2 стартмани

Групповая проверка доработок

Обработка для массовой проверки доработок конфигурации: Открытие форм, Печать, Формирование отчетов, Проведение документов, Запись справочников, ПВХ, ПВР.
Выдает список обнаруженных ошибок.
Рекомендуется применять для тестирования обновленной конфигурации, перед установкой пользователям.
В коде используются универсальные методы поэтому подходит для большинства конфигураций, построенных на базе библиотеки стандартных подсистем.
Проверялась на Зарплата и управление персоналом КОРП 3.1.8.216, Управление торговлей 11, 1С:ERP Управление предприятием 2.4.7.141, Бухгалтерия предприятия КОРП 3.0.68.66.

2 стартмани

Обработка конкретных фич языка

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

Краткое резюме этого параграфа показано в таблице ниже. При этом надо не забывать, что результаты, показанные jadx, не вполне релевантны. Для jadx в следующей секции проведен отдельный разбор, в котором в качестве подопытного взят Android-проект.

Для начала рассмотрим конструкции, с обработкой которых не справился только один из инструментов.

for-each

Fernflower всегда раскрывает конструкции через итераторы. Причем делает он это не вполне корректно.

Например, здесь засоряет внешнюю область видимости, из-за чего может происходить переопределение переменной. К тому же, у итератора не указан параметр типа, что приводит к в четвертой строке:

Тернарный оператор при индексации массива

Стандартная и очень неприятная ошибка Procyon’а. Разобраться, что хотел сказать автор, не имея исходного кода под рукой, — задача не очень тривиальная, особенно в более сложных случаях:

Статическое поле в интерфейсе

Загадочная ошибка, воспроизводящаяся только при использовании Procyon. Атрибут , указанный вместо в определении , порождает ошибку:

Методика оптимизации программного кода 1С: проведение документов

Описание простого метода анализа производительности программного кода 1С, способов его оптимизации и оценки результатов в виде числовых показателей прироста производительности. Не требует сторонних программных продуктов, используются только типовые возможности платформ 1С.
Методика проверена на линейке платформ начиная с 1С:Предприятие 8.2 (обычные формы, управляемые формы). Позволяет ускорить проведение проблемных документов в 3 и более раз, провести проверку корректности формирования проводок оптимизированным кодом и подтвердить результаты оптимизации реальными замерами производительности в режиме предприятия.
К публикации приложены демонстрационные базы для режимов обычного и управляемого приложения на платформе 1С:Предприятие 8.3 (8.3.9.2033).

1 стартмани

Значит я могу взять исходники и сделать свою Elma BPM?

— нет этого сделать не получится

  • Почти весь серверный код обфусцирован (преобразован в непонятный вид для человека — без изменения логики для машины)
  • Все модули связаны и подписаны ( ключом шифрования) — один без другого не запустится

Вывод: это делать бессмысленно — вы больше потратите времени чтобы разобраться и собрать свою копию чем сделать заново

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

Украсть не получится — понятно

— тогда может хотя бы взломать активацию (сделать генератор ключей)?

* Забегая вперед —  тоже не получится )

В Elma BPM используется механизм односторонних функций — пара связанных функций

  • одна шифрует в одну сторону
  • другая в обратную

а в наличии только последняя.

  1. Представьте что вы пропустили лист бумаги через шредер (измельчитель бумаги)
  2. И теперь представьте механизм превращающий из мусора лист бумаги без потери информации… (у вас именно такой механизм)
  3. А теперь вам предстоит подобрать нужный шредер — удачи)

— такие функции используют преобразования XOR(исключающий или) — где обратная операция возвращает неоднозначный ответ (например на вход 1, на выход 0 или 1 — неизвестно).

Как декомпилировать EXE-файл

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

Вариант 1: VB Decompiler

Корректно способен провести декомпиляцию EXE-файлов, написанных и скомпилированных через Visual Basic 5.0 и 6.0. Это самая популярная среда разработки программ для Windows. Сама программа полностью бесплатна и занимает на диске всего несколько мегабайт.

  1. В верхней части интерфейса кликните по пункту «Файл» и выберите из контекстного меню вариант «Открыть программу». Вместо этого можно воспользоваться сочетанием клавиш Ctrl+O.
  2. В «Проводнике» отыщите исполняемый файл той программы, декомпиляцию которой вы собираетесь провести. Выделите его и нажмите на кнопку «Открыть», чтобы выполнить загрузку файла в рабочую среду.
  3. Путь до нужного EXE-файла отобразится в строке «Файл». Нажмите на кнопку «Старт», чтобы запустить процедуру декомпиляции.
  4. Программа не оповещает о завершении процедуры декомпиляции. О завершении таковой будет свидетельствовать только надпись «Декомпилировано» в нижней левой части окна.
  5. Для сохранения декомпилированного файла нажмите по кнопке «Файл» в верхнем меню и выберите из выпадающего списка вариант «Сохранить декомпилированный проект». Можете просто воспользоваться сочетанием клавиш Ctrl+S.

Вариант 2: EMS Source Rescuer

Данный декомпилятор корректно работает с файлами, скомпилированными с помощью Delphi и C++ Builder. Работа с другими компиляторами возможна, но официально не поддерживается, поэтому есть риски. Программа распространяется полностью бесплатно.

  1. Запустите EMS Source Rescuer. Его интерфейс представлен в качестве блоков с шагами. На первом шаге вам требуется указать путь до проекта, который будет декомпилирован. Это можно сделать, нажав на кнопку папки в строке «Executable File».
  2. Выберите нужный EXE-файл в окошке «Проводника».
  3. В поле «Project name» пропишите имя декомпилируемого проекта и нажмите «Next».
  4. На следующем шаге потребуется выбрать язык программирования, используемый в выбранном проекте. Это делается в блоке «Output style». Поставив маркер на нужном месте нажмите «Next».
  5. Вы перейдете сразу на 3-й шаг. Здесь будет показан исходный код проекта. Ниже выберите папку, в которую будут сохранены исходные файлы, извлеченные из EXE-файла, и нажмите «Save».

Вариант 3: ReFox

ReFox отлично зарекомендовал себя в декомпиляции проектов, созданных через Visual FoxPro и FoxBASE+. Сама программа носит условно-бесплатный характер использования. Есть демонстрационная версия, использование которой бесплатно, но только определенный период времени.

Инструкция по использованию данной программы выглядит так:

  1. В левую часть интерфейса программы уже встроен обозреватель файлов. Воспользуйтесь им, чтобы найти и открыть нужный EXE-файл. В правой части отображается техническая информация о выбранном элементе.
  2. Кликните правой кнопкой мыши по выбранному файлу. В контекстном меню выберите пункт «Decompile».
  3. Появится окошко, в котором будет указана директория декомпилируемого файла. Если там все верно, то нажмите «Ок» для продолжения операции.
  4. По завершении процесса вы получите соответствующее сообщение. Нажмите там «Ок». Результат можно посмотреть в той папке, которую вы указали во 2 шаге.

Вариант 4: DeDe

Эта программа для декомпиляции не так функциональна и поддерживает только одни язык – Delphi.

  1. Около самого верхнего поля нажмите на кнопку в виде раскрытой папки. Она отвечает за добавление папки.
  2. Выберите в «Проводнике» нужный EXE-файл и нажмите «Открыть».
  3. Чтобы запустить процесс декомпиляции, нажмите на кнопку «Процесс», которая расположена около строки указания проекта.
  4. При успешном завершении вы получите соответствующее сообщение. Нажмите «Ок» или закройте его.
  5. Теперь вам осталось сохранить результаты декомпилирования на компьютере. Переключитесь на вкладку «Project».
  6. Рекомендуется отметить галочками все пункты в блоке «Сохранить Делфи Проект». В строке «Папка проекта» укажите директорию, куда будет выполнено сохранение. Нажмите на кнопку «Сделать файлы», чтобы завершить сохранение.

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

Инструктор. Прототип инструмента создания быстрых пользовательских инструкций

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

«Инструктор» не требует никакой установки и дополнительных библиотек!
Это означает, что инструмент будет работать и на домашнем ПК и на «чужом ноутбуке» и на терминальном win-сервере у заказчика, где ваши права сильно ограничены.
Вы просто подключаете легкую файловую базу 1С и получаете инструмент по снятию скриншотов с интересной функциональностью…

1 стартмани

Создание exe файла с помощью PyInstaller

PyInstaller собирает в один пакет Python-приложение и все необходимые ему библиотеки следующим образом:

  1. Считывает файл скрипта.
  2. Анализирует код для выявления всех зависимостей, необходимых для работы.
  3. spec, который содержит название скрипта, библиотеки-зависимости, любые файлы, включая те параметры, которые были переданы в команду PyInstaller.
  4. Собирает копии всех библиотек и файлов вместе с активным интерпретатором Python.
  5. Создает папку BUILD в папке со скриптом и записывает логи вместе с рабочими файлами в BUILD.
  6. Создает папку DIST в папке со скриптом, если она еще не существует.
  7. Записывает все необходимые файлы вместе со скриптом или в одну папку, или в один исполняемый файл.

Если использовать параметр команды или при генерации исполняемого файла, тогда все будет помещено в одну папку. Это поведение по умолчанию. Если же использовать параметр или , то все окажется в одном исполняемом файле.

Возьмем в качестве примера простейший c названием simple.py, который содержит такой код.

Копировать

Создадим один исполняемый файл. В командной строке введите:

После завершения установки будет две папки, BUILD и DIST, а также новый файл с расширением .spec. Spec-файл будет называться так же, как и файл скрипта.

Python создает каталог распространения, который содержит основной исполняемый файл, а также все динамические библиотеки.

Вот что произойдет после запуска файла.

Способы преобразования файлов EXE

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

Способ 1: Использование утилиты VB Decompiler

Данный софт используется для преобразования утилит, которые были созданы на Visual Basic 5.0 или 6.0.

  1. Активируем программу и в главном окне выбираем вкладку «Файл».
  2. В появившемся меню нажимаем на «Открыть программу». Выполнить ту же процедуру можно используя быстрые клавиши Ctrl+O.
  3. В «Проводнике» находим нужный файл.
  4. Процесс преобразования должен запуститься самостоятельно. Если по какой-либо причине это не произошло, выберите «Старт».
  5. По завершению процедуры высветится надпись «Декомпилировано».
  6. Основное поле программы будет поделено на два окна. В левом можно увидеть хронологию, а в правом отобразится исходный код.
  7. Есть возможность сохранить на компьютер преобразованные файлы. В верхнем меню выберите «Файл» и перейдите по вкладке «Сохранить декомпилированный проект».

Способ 2: Воспользоваться программой ReFox

Данная программа предназначена для преобразования утилит написанных на FoxPro или FoxBASE+.

  1. Откройте программу и воспользуйтесь интегрированным Проводником для поиска необходимого файла. При нажатии на него сразу можно увидеть некоторую информацию.
  2. Нажмите правой кнопкой мыши на файл и в появившемся меню кликните на «Decompile».
  3. В следующем окне определите место для хранения новых файлов.
  4. После нажатия на «ОК», процедура будет автоматически запущенна и по окончанию выдаст оповещение.

Способ 3: С помощью DeDe

Эта утилита используется при необходимости выполнить процедуру с программами, написанными на Delphi.

  1. Запустите софт, и найдите значок «Добавление файла».
  2. Выберете файл с необходимым расширением.
  3. Для запуска работы утилиты кликните на «Процесс».
  4. После завершения процедуры появится окно со следующим текстом: «Дампирование Выполнено».
  5. Теперь можно просмотреть всю полученную информацию.
  6. Для сохранения полученных данных перейдите на раздел «Project» и поставьте напротив необходимых объектов галочки.

Способ 4: Программа EMS Source Rescuer

Данная утилита может работать с файлами, написанными на двух языках Delphi и C++ Builder.

  1. Активируйте программу и в первой строке выставьте путь к нужному файлу.
  2. Пропишите имя нового объекта в графе «Project name».
  3. Определите нужные файлы и выберите, какой кодировкой они были созданы.
  4. Открывшееся окно показывает еще не сохраненный код. Для дублирования его на компьютер укажите необходимый каталог и нажмите на «Save».

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

Поддержка и активность проекта

Fernflower

С одной стороны, этот декомпилятор используется в Intellij IDEA, что гарантирует жизнь и поддержку этого проекта.

С другой стороны, Fernflower — часть проекта Intellij IDEA. У самого декомпилятора нет даже отдельного репозитория на гитхабе (только упомянутое выше неофициальное зеркало, ссылка на которое — единственный способ подключить Fernflower к своему проекту как зависимость).

Если судить по репозиторию на гитхабе, активного добавления новых фич в этот проект не наблюдается. Последний коммит в случился 3 месяца назад (состояние на осень 2019). Точнее понять, что происходит с этим проектом, трудно, так как кодовая база является частью репозитория Intellij IDEA.

CFR

Код пишется одним человеком, но релизы происходят регулярно (по нескольку раз в год). На все замечания, отправленные мной автору на почту, он ответил в течение нескольких дней и исправил ошибки в течение недели-двух. Только за время написания этой статьи вышел новый релиз (0.147), в котором починена одна из упомянутых ошибок.

Также этот проект относительно быстро развивается, и поддержка новых фич появляется в нем довольно оперативно.

Procyon

Проект поддерживается, этим летом (2019) даже был новый релиз. Но в этом релизе не было добавлено никаких новых фич, только починены старые баги. В общем, создается впечатление, что проект не забыт, но развиваться он больше не будет.

jadx

Этот декомпилятор постоянно развивается, репозиторий и ишью-трекер на гитхабе очень живые и активные. 20 июня 2019 произошел релиз версии 1.0.0. Новые фичи и поддержка более актуальных версий DVM добавляются.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector