Pyarmor-Static-Unpack-1shot:一键解密 Pyarmor 加密脚本
项目介绍
在软件开发领域,代码保护是一项重要的安全措施。Pyarmor 是一款流行的 Python 代码保护工具,它将 Python 脚本转换成二进制数据,形成一种加密的 pyc 文件变体。这些文件可以被共享库(pyarmor_runtime)解密,并由 Python 解释器执行。
Pyarmor-Static-Unpack-1shot 项目则旨在将这些加密数据转换回字节码汇编,甚至实验性地还原回源代码。项目基于优秀的 Decompyle++(pycdc)进行了分支开发,并在此基础上增加了一些抽象语法树的修改。
项目技术分析
Pyarmor-Static-Unpack-1shot 的工作原理与 Pyarmor 相反,它不需要执行加密脚本,而是使用与 pyarmor_runtime 相同的算法进行解密。这种静态解密方式在处理不可信脚本时尤为有用。
项目支持 Pyarmor 8.0 到 9.1.2(最新版)的所有版本,兼容 Python 3.7 至 3.13,并可在所有操作系统上运行。它尽可能支持多种混淆选项,尽管测试有限。
值得注意的是,如果数据以 PY
后跟六位数字开始,则表示支持;如果以 PYARMOR
开始,则表示它是由 Pyarmor 7 或更早版本生成的,本项目不支持。
项目及应用场景
Pyarmor-Static-Unpack-1shot 的应用场景主要包括:
- 安全审计:在安全审计过程中,可能需要检查加密脚本的安全性或还原代码以进行深入分析。
- 代码调试:开发者可能需要调试加密脚本,以便更好地理解其行为或修复潜在的错误。
- 逆向工程:在某些合法的研究或开发场景中,可能需要分析加密脚本来获取技术细节或逆向工程。
项目特点
静态解密
Pyarmor-Static-Unpack-1shot 不需要执行加密脚本,即可实现解密。这种静态解密方式在处理不信任的脚本时非常有效。
通用性
项目旨在支持 Pyarmor 8.0 到 9.1.2 版本,以及 Python 3.7 至 3.13,在所有操作系统上运行,并尽可能支持更多的混淆选项。
易用性
使用 Pyarmor-Static-Unpack-1shot 非常简单,用户只需指定加密脚本所在位置,工具就会自动检测、解析、反汇编和反编译。
安装与使用
安装步骤如下:
mkdir build
cd build
cmake ..
cmake --build .
cmake --install .
也可以在项目发布页下载预编译的二进制文件。
使用方法:
python /path/to/helpers/shot.py /path/to/scripts
确保在运行 shot.py
之前,helpers
目录下存在 pyarmor-1shot
(Windows 系统为 pyarmor-1shot.exe
)可执行文件。
只需指定包含所有加密数据及 pyarmor_runtime
的目录,工具将尽可能递归处理它们。
如果需要,可以使用 -r path/to/pyarmor_runtime[.pyd|.so|.dylib]
指定 pyarmor_runtime
可执行文件路径。所有生成的文件名将包含 .1shot.
。如果希望将文件保存到其他目录,可以使用 -o another/path/
,文件夹结构将保持不变。
注意事项
- 如果子目录名为
__pycache__
或site-packages
,或直接包含.no1shot
文件,则不会处理这些目录,以避免重复处理或无限循环,节省时间。 - 对于 PyInstaller 打包的归档文件或可执行文件,必须使用其他工具先进行解包,否则可能会遇到未定义的行为。
结语
Pyarmor-Static-Unpack-1shot 是一款功能强大的工具,适用于处理 Pyarmor 加密的 Python 脚本。其静态解密、通用性和易用性使其成为开发者和安全专家的重要助手。无论是出于安全性审计、代码调试还是逆向工程的需求,Pyarmor-Static-Unpack-1shot 都能提供有效的支持。如果你需要一款强大的 Python 代码解密工具,Pyarmor-Static-Unpack-1shot 绝对值得一试。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考