Декомпиляция apk-файла на андроид
Содержание:
- Декомпиляция приложений и её функции
- Automated TeamCity Builds
- Build in Docker
- decompiler
- Legality
- References
- Source code
- decompiler
- Licenses + Acknowledgments
- Файл spec
- Подсистема «Показатели объектов»
- Групповая проверка доработок
- Обработка конкретных фич языка
- Методика оптимизации программного кода 1С: проведение документов
- Значит я могу взять исходники и сделать свою Elma BPM?
- Как декомпилировать EXE-файл
- Инструктор. Прототип инструмента создания быстрых пользовательских инструкций
- Создание exe файла с помощью PyInstaller
- Способы преобразования файлов EXE
- Поддержка и активность проекта
Декомпиляция приложений и её функции
Один из языков программирования, который используется при написании программ для ОС Android – Java. На нём, как правило, пишут программы новички и люди, которые привыкли к его инструментарию. Крупные разработчики используют другие языки, которые дают больше свободы в использовании сторонних библиотек или программных компонентов.
Для того, чтобы написанный код превратился работающее приложение, его нужно скомпилировать встроенным в SDK (Software Development Kit) компилятором. Обратный же процесс, когда из готового APK-файла получается программный код, называется декомпиляцией.
Для чего может понадобиться декомпилировать такие файлы? Есть несколько ситуаций, в которых это пригодится:
- Пользователю недостаточно предоставленного функционала и он обладает достаточными знаниями и опытом, чтобы вносить изменения в готовый код.
- Посмотреть, как работает определённый компонент программы и приобрести нужный опыт в его реализации при создании собственного продукта.
- Определить, используются ли в приложении какие-либо части вредоносного кода.
Как видно, все эти задачи требуют некоторого опыта работы с языками программирования и 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
- 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.
- 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.
- Rowland, Diane (2005). Informtion technology law (3rd ed.). Cavendish. ISBN 1-85941-756-6.
- 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 используется механизм односторонних функций — пара связанных функций
- одна шифрует в одну сторону
- другая в обратную
а в наличии только последняя.
- Представьте что вы пропустили лист бумаги через шредер (измельчитель бумаги)
- И теперь представьте механизм превращающий из мусора лист бумаги без потери информации… (у вас именно такой механизм)
- А теперь вам предстоит подобрать нужный шредер — удачи)
— такие функции используют преобразования XOR(исключающий или) — где обратная операция возвращает неоднозначный ответ (например на вход 1, на выход 0 или 1 — неизвестно).
Как декомпилировать EXE-файл
К сожалению, Windows не предусматривает в своем инструментарии встроенных инструментов, позволяющих выполнить декомпиляцию, поэтому придется пользоваться только сторонним ПО. Такое ПО может быть полезно как пользователям, которые просто желают получше изучить исходный код той или иной программы, так и разработчикам.
Вариант 1: VB Decompiler
Корректно способен провести декомпиляцию EXE-файлов, написанных и скомпилированных через Visual Basic 5.0 и 6.0. Это самая популярная среда разработки программ для Windows. Сама программа полностью бесплатна и занимает на диске всего несколько мегабайт.
- В верхней части интерфейса кликните по пункту «Файл» и выберите из контекстного меню вариант «Открыть программу». Вместо этого можно воспользоваться сочетанием клавиш Ctrl+O.
- В «Проводнике» отыщите исполняемый файл той программы, декомпиляцию которой вы собираетесь провести. Выделите его и нажмите на кнопку «Открыть», чтобы выполнить загрузку файла в рабочую среду.
- Путь до нужного EXE-файла отобразится в строке «Файл». Нажмите на кнопку «Старт», чтобы запустить процедуру декомпиляции.
- Программа не оповещает о завершении процедуры декомпиляции. О завершении таковой будет свидетельствовать только надпись «Декомпилировано» в нижней левой части окна.
- Для сохранения декомпилированного файла нажмите по кнопке «Файл» в верхнем меню и выберите из выпадающего списка вариант «Сохранить декомпилированный проект». Можете просто воспользоваться сочетанием клавиш Ctrl+S.
Вариант 2: EMS Source Rescuer
Данный декомпилятор корректно работает с файлами, скомпилированными с помощью Delphi и C++ Builder. Работа с другими компиляторами возможна, но официально не поддерживается, поэтому есть риски. Программа распространяется полностью бесплатно.
- Запустите EMS Source Rescuer. Его интерфейс представлен в качестве блоков с шагами. На первом шаге вам требуется указать путь до проекта, который будет декомпилирован. Это можно сделать, нажав на кнопку папки в строке «Executable File».
- Выберите нужный EXE-файл в окошке «Проводника».
- В поле «Project name» пропишите имя декомпилируемого проекта и нажмите «Next».
- На следующем шаге потребуется выбрать язык программирования, используемый в выбранном проекте. Это делается в блоке «Output style». Поставив маркер на нужном месте нажмите «Next».
- Вы перейдете сразу на 3-й шаг. Здесь будет показан исходный код проекта. Ниже выберите папку, в которую будут сохранены исходные файлы, извлеченные из EXE-файла, и нажмите «Save».
Вариант 3: ReFox
ReFox отлично зарекомендовал себя в декомпиляции проектов, созданных через Visual FoxPro и FoxBASE+. Сама программа носит условно-бесплатный характер использования. Есть демонстрационная версия, использование которой бесплатно, но только определенный период времени.
Инструкция по использованию данной программы выглядит так:
- В левую часть интерфейса программы уже встроен обозреватель файлов. Воспользуйтесь им, чтобы найти и открыть нужный EXE-файл. В правой части отображается техническая информация о выбранном элементе.
- Кликните правой кнопкой мыши по выбранному файлу. В контекстном меню выберите пункт «Decompile».
- Появится окошко, в котором будет указана директория декомпилируемого файла. Если там все верно, то нажмите «Ок» для продолжения операции.
- По завершении процесса вы получите соответствующее сообщение. Нажмите там «Ок». Результат можно посмотреть в той папке, которую вы указали во 2 шаге.
Вариант 4: DeDe
Эта программа для декомпиляции не так функциональна и поддерживает только одни язык – Delphi.
- Около самого верхнего поля нажмите на кнопку в виде раскрытой папки. Она отвечает за добавление папки.
- Выберите в «Проводнике» нужный EXE-файл и нажмите «Открыть».
- Чтобы запустить процесс декомпиляции, нажмите на кнопку «Процесс», которая расположена около строки указания проекта.
- При успешном завершении вы получите соответствующее сообщение. Нажмите «Ок» или закройте его.
- Теперь вам осталось сохранить результаты декомпилирования на компьютере. Переключитесь на вкладку «Project».
- Рекомендуется отметить галочками все пункты в блоке «Сохранить Делфи Проект». В строке «Папка проекта» укажите директорию, куда будет выполнено сохранение. Нажмите на кнопку «Сделать файлы», чтобы завершить сохранение.
Представленные декомпиляторы способы выполнить обратное преобразование большинства EXE-файлов, написанных на разных языках программирования. Как видите, в самом процессе, вне зависимости от выбранной программы, нет ничего сложного.
Инструктор. Прототип инструмента создания быстрых пользовательских инструкций
Прототип дружелюбного и эффективного инструмента для написания пользовательских экспресс-инструкций.
Задействована штатная утилита Windows, о существовании которой многие не знают и которая умеет делать огромную работу по логированию действий и снятию скриншотов на всех ПК с Windows (начиная с версии Win7).
«Инструктор» не требует никакой установки и дополнительных библиотек!
Это означает, что инструмент будет работать и на домашнем ПК и на «чужом ноутбуке» и на терминальном win-сервере у заказчика, где ваши права сильно ограничены.
Вы просто подключаете легкую файловую базу 1С и получаете инструмент по снятию скриншотов с интересной функциональностью…
1 стартмани
Создание exe файла с помощью PyInstaller
PyInstaller собирает в один пакет Python-приложение и все необходимые ему библиотеки следующим образом:
- Считывает файл скрипта.
- Анализирует код для выявления всех зависимостей, необходимых для работы.
- spec, который содержит название скрипта, библиотеки-зависимости, любые файлы, включая те параметры, которые были переданы в команду PyInstaller.
- Собирает копии всех библиотек и файлов вместе с активным интерпретатором Python.
- Создает папку BUILD в папке со скриптом и записывает логи вместе с рабочими файлами в BUILD.
- Создает папку DIST в папке со скриптом, если она еще не существует.
- Записывает все необходимые файлы вместе со скриптом или в одну папку, или в один исполняемый файл.
Если использовать параметр команды или при генерации исполняемого файла, тогда все будет помещено в одну папку. Это поведение по умолчанию. Если же использовать параметр или , то все окажется в одном исполняемом файле.
Возьмем в качестве примера простейший c названием simple.py, который содержит такой код.
Копировать
Создадим один исполняемый файл. В командной строке введите:
После завершения установки будет две папки, BUILD и DIST, а также новый файл с расширением .spec. Spec-файл будет называться так же, как и файл скрипта.
Python создает каталог распространения, который содержит основной исполняемый файл, а также все динамические библиотеки.
Вот что произойдет после запуска файла.
Способы преобразования файлов EXE
Необходимость преобразовать подобные файлы может возникнуть у пользователей, которые хотят получить информацию о характеристике различных утилит. Имеются определенные программы, предназначенные специально для декомпиляции.
Способ 1: Использование утилиты VB Decompiler
Данный софт используется для преобразования утилит, которые были созданы на Visual Basic 5.0 или 6.0.
- Активируем программу и в главном окне выбираем вкладку «Файл».
- В появившемся меню нажимаем на «Открыть программу». Выполнить ту же процедуру можно используя быстрые клавиши Ctrl+O.
- В «Проводнике» находим нужный файл.
- Процесс преобразования должен запуститься самостоятельно. Если по какой-либо причине это не произошло, выберите «Старт».
- По завершению процедуры высветится надпись «Декомпилировано».
- Основное поле программы будет поделено на два окна. В левом можно увидеть хронологию, а в правом отобразится исходный код.
- Есть возможность сохранить на компьютер преобразованные файлы. В верхнем меню выберите «Файл» и перейдите по вкладке «Сохранить декомпилированный проект».
Способ 2: Воспользоваться программой ReFox
Данная программа предназначена для преобразования утилит написанных на FoxPro или FoxBASE+.
- Откройте программу и воспользуйтесь интегрированным Проводником для поиска необходимого файла. При нажатии на него сразу можно увидеть некоторую информацию.
- Нажмите правой кнопкой мыши на файл и в появившемся меню кликните на «Decompile».
- В следующем окне определите место для хранения новых файлов.
- После нажатия на «ОК», процедура будет автоматически запущенна и по окончанию выдаст оповещение.
Способ 3: С помощью DeDe
Эта утилита используется при необходимости выполнить процедуру с программами, написанными на Delphi.
- Запустите софт, и найдите значок «Добавление файла».
- Выберете файл с необходимым расширением.
- Для запуска работы утилиты кликните на «Процесс».
- После завершения процедуры появится окно со следующим текстом: «Дампирование Выполнено».
- Теперь можно просмотреть всю полученную информацию.
- Для сохранения полученных данных перейдите на раздел «Project» и поставьте напротив необходимых объектов галочки.
Способ 4: Программа EMS Source Rescuer
Данная утилита может работать с файлами, написанными на двух языках Delphi и C++ Builder.
- Активируйте программу и в первой строке выставьте путь к нужному файлу.
- Пропишите имя нового объекта в графе «Project name».
- Определите нужные файлы и выберите, какой кодировкой они были созданы.
- Открывшееся окно показывает еще не сохраненный код. Для дублирования его на компьютер укажите необходимый каталог и нажмите на «Save».
В этой статье был рассмотрен софт, помогающий в декомпиляции программ, написанных различным кодом. Известно еще множество подобных утилит, но именно эти обладают необходимыми функциями и довольно-таки просты в использовании.
Поддержка и активность проекта
Fernflower
С одной стороны, этот декомпилятор используется в Intellij IDEA, что гарантирует жизнь и поддержку этого проекта.
С другой стороны, Fernflower — часть проекта Intellij IDEA. У самого декомпилятора нет даже отдельного репозитория на гитхабе (только упомянутое выше неофициальное зеркало, ссылка на которое — единственный способ подключить Fernflower к своему проекту как зависимость).
Если судить по репозиторию на гитхабе, активного добавления новых фич в этот проект не наблюдается. Последний коммит в случился 3 месяца назад (состояние на осень 2019). Точнее понять, что происходит с этим проектом, трудно, так как кодовая база является частью репозитория Intellij IDEA.
CFR
Код пишется одним человеком, но релизы происходят регулярно (по нескольку раз в год). На все замечания, отправленные мной автору на почту, он ответил в течение нескольких дней и исправил ошибки в течение недели-двух. Только за время написания этой статьи вышел новый релиз (0.147), в котором починена одна из упомянутых ошибок.
Также этот проект относительно быстро развивается, и поддержка новых фич появляется в нем довольно оперативно.
Procyon
Проект поддерживается, этим летом (2019) даже был новый релиз. Но в этом релизе не было добавлено никаких новых фич, только починены старые баги. В общем, создается впечатление, что проект не забыт, но развиваться он больше не будет.
jadx
Этот декомпилятор постоянно развивается, репозиторий и ишью-трекер на гитхабе очень живые и активные. 20 июня 2019 произошел релиз версии 1.0.0. Новые фичи и поддержка более актуальных версий DVM добавляются.