Python
Исполняемый файлдокумент(.exe)Быть противодействующимкомпилироватьявляется важной мерой безопасности,Особенно, если вы хотите защитить свою интеллектуальную собственность, алгоритмы или бизнес-логику. Хотя абсолютной безопасности не существует,Но есть некоторые меры, которые можно принять, чтобы затруднить контратаку.,Злоумышленнику становится сложнее получить ваш источник.pyinstaller
использовать --key
Шифровать--key
Параметры для Шифровать, например: pyinstaller --onefile -p venv/Lib/site-packages .\print-student\main.py --key '1234'
.pyc.encrypted
,Невозможно выполнить обратную компиляцию нормально.PyInstaller v6.0
Удалить команду шифрованияBytecode encryption was removed in PyInstaller v6.0. Please remove your --key=xxx argument. For the rationale and alternatives see https://github.com/pyinstaller/pyinstaller/pull/6999
github
Некоторые обсуждения:PyInstaller
Любой, кто использует код, чтобы получить точную структуру исполняемого архива и быстрый шестнадцатеричный дамп, может взломать его и получить ключ, как только вы узнаете, где искать.PyExtractor
Такой PyInstaller
В инструменты реверс-инжиниринга все это встроено. Например, в приведенных ниже шагах нашим отслеживающим пользователям даже не нужно знать, что приложение, которое они пытаются открыть, зашифровано, не говоря уже о том, чтобы предпринимать какие-либо умные меры для его расшифровки.git clone https://github.com/Rdimo/PyExtractor.git
cd PyExtractor
pip install -r requirements.txt
python main.py some/pyinstaller/application
PyInstaller
Сборка поставлена API Безопасное место для ключей и т. д. В конце концов, даже добавление дополнительной обфускации кода приводит к тому же результату, полностью удаляя функциональность шифрования.Python
.pycдокумент создается при упаковке или оптимизации скорости работы, аналогично Java
.классдокумент. Эти .pycдокументы можно просто скомпилировать в .pydocument, например Java
Документ .class можно отменить как компилировать. Java
Исходный код тот же. Однако, по сравнению с этим, машинный код, сгенерированный на языке C, компилировать обратно сложнее. Фактически, машинный код обычно переводится в ассемблерный код или трудночитаемый язык C. В настоящее время нет возможности напрямую преобразовать машинный код обратно в Python
метод кода. Следовательно, мы можем воспользоваться этим для шифрования нашего кода.Cython
представляет собой компилирующее устройство, которое может Cython
источниккод Превратить в эффективныйС или С++
источниккод。Затем,Мы можем поставить этиисточниккодкомпилировать дляPython
Модуль расширения или отдельный исполняемый документ. Автор сипользовать Cython
поместите наш Python
Преобразование кода в C или C++ может значительно усложнить обратную компиляцию.Cython
pip install cython
Cython
документ & компилироватьbuild_pyd.py
документ:from distutils.core import setup
from Cython.Build import cythonize
setup(
name='имя',ext_modules=cythonize(
[
"PythonСкриптдокумент.py", "Папка документов сценария Python/*.py",
# ...
],
language_level=3
),
)
// компилировать
python build_pyd.py build_ext --inplace
│ app.c
│ app.cp38-win_amd64.pyd
│ app.py
│ build_pyd.py
│ config.c
│ config.cp38-win_amd64.pyd
│ config.py
│ gui.c
│ gui.cp38-win_amd64.pyd
│ gui.py
│ log.c
│ log.cp38-win_amd64.pyd
│ log.py
│ run.py
│
├─.idea
│ ......пропуск......
│
├─build
│ ......пропуск......
│
├─images
│ icon.ico
│
├─logs
│ ......пропуск......
│
├─venv
│ ......пропуск......
│
└─__pycache__
pyinstaller -F run.py --hidden-import json --hidden-import tkinter --hidden-import tkinter.filedialog --hidden-import requests --hidden-import docx --hidden-import openpyxl --hidden-import log --hidden-import gui --hidden-import tkinter.ttk --hidden-import config
Python
источникдокументкомпилироватьстановиться.pydдокументчас,Поскольку .pydдокумент — это двоичный документ,PyInstaller
.pydдокумент нельзя анализировать напрямую при анализе пакета, который необходимо импортировать. привести к PyInstaller
Не знаю, какие модули импортируются в .pydдокумент.PyInstaller
Какие модули нам нужно импортировать, чтобы правильно упаковать приложение.Python .exe
источникметод шифрования кода,Но на самом деле, независимо от того, каким методом можно добиться полного шифрования,Это лишь относительно увеличивает сложность контратаки. Проще говоря,Python
Это интерпретируемый язык, и исполнитель анализирует исходный код. Даже если он запускается, его необходимо расшифровать в исходный код, который отличается от исходного. C、C++
ждатькомпилироватьввести язык,Машинный код, выполняемый исполнителем,Сложность антимашинного кода возросла в геометрической прогрессии.👋 привет, я Lorin Лорейн, один Java Разработчик бэкэнд-технологий!девиз:Technology has the power to make the world a better place.
🚀 Моя страсть к технологиям — это моя мотивация продолжать учиться и делиться ими. Мой блог — это место об экосистеме Java, серверной разработке и последних технологических тенденциях.
🧠 Будучи энтузиастом серверных технологий Java, я не только с энтузиазмом изучаю новые возможности языка и глубину технологий, но также с удовольствием делюсь своими идеями и передовым опытом. Я верю, что обмен знаниями и сотрудничество с сообществом могут помочь нам расти вместе.
💡 В моем блоге вы найдете подробные статьи об основных концепциях Java, базовой технологии JVM, часто используемых платформах, таких как Spring и Mybatis, управлении базами данных, таких как MySQL, промежуточном программном обеспечении для обработки сообщений, таком как RabbitMQ, Rocketmq и т. д., оптимизации производительности, и т. д. Я также поделюсь некоторыми советами по программированию и методами решения проблем, которые помогут вам лучше освоить программирование на Java.
🌐 Я поощряю взаимодействие и создание сообщества, поэтому, пожалуйста, оставляйте свои вопросы, предложения или запросы по темам и дайте мне знать, что вас интересует. Кроме того, я буду делиться последними новостями Интернета и технологий, чтобы вы всегда были в курсе последних событий в мире технологий. Я с нетерпением жду возможности вместе с вами двигаться вперед по пути технологий и исследовать безграничные возможности мира технологий.
📖 Следите за обновлениями моего блога и давайте вместе стремиться к техническому совершенству.