Pyarmor-Static-Unpack-1shot:一键解密 Pyarmor 加密脚本

Pyarmor-Static-Unpack-1shot:一键解密 Pyarmor 加密脚本

Pyarmor-Static-Unpack-1shot ✅ No need to run ✅ Pyarmor 8.0 - latest 9.1.1 ✅ Universal ✅ Statically convert obfuscated scripts to disassembly and (experimentally) source code. Pyarmor-Static-Unpack-1shot 项目地址: https://gitcode.com/gh_mirrors/py/Pyarmor-Static-Unpack-1shot

项目介绍

在软件开发领域,代码保护是一项重要的安全措施。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 的应用场景主要包括:

  1. 安全审计:在安全审计过程中,可能需要检查加密脚本的安全性或还原代码以进行深入分析。
  2. 代码调试:开发者可能需要调试加密脚本,以便更好地理解其行为或修复潜在的错误。
  3. 逆向工程:在某些合法的研究或开发场景中,可能需要分析加密脚本来获取技术细节或逆向工程。

项目特点

静态解密

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 绝对值得一试。

Pyarmor-Static-Unpack-1shot ✅ No need to run ✅ Pyarmor 8.0 - latest 9.1.1 ✅ Universal ✅ Statically convert obfuscated scripts to disassembly and (experimentally) source code. Pyarmor-Static-Unpack-1shot 项目地址: https://gitcode.com/gh_mirrors/py/Pyarmor-Static-Unpack-1shot

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

### 关于 PyArmor 的多进程支持 PyArmor 是一种用于保护 Python 脚本免受逆向工程和未经授权使用的工具。它可以将脚本打包并加密,从而防止源码泄露。然而,在涉及多进程的应用场景下,使用 PyArmor 需要注意一些特定的行为。 #### 加密后的代码在多进程中的行为 当使用 `multiprocessing` 或者类似的库创建子进程时,主进程加载的加密模块不会自动传递给子进程[^1]。这是因为每个子进程都会重新初始化环境,并尝试导入所需的模块。如果这些模块已经被 PyArmor 加密,则需要确保子进程能够正确解密和加载它们。 #### 解决方案:配置入口点 为了使多进程正常工作,可以在项目的根目录下设置一个特殊的引导文件 `_pytransform.py`,该文件由 PyArmor 自动生成。通过指定此文件作为所有子进程的初始加载项,可以解决子进程中无法识别加密模块的问题[^2]。 以下是实现这一功能的具体方式: ```python import multiprocessing from pytransform import pyarmor_runtime # 导入 PyArmor 提供的运行时支持 def worker(): """ 子进程的任务 """ print("Worker is running with encrypted modules.") if __name__ == "__main__": pyarmor_runtime() # 初始化 PyArmor 运行时环境 pool = multiprocessing.Pool(processes=4) results = pool.apply_async(worker, ()) pool.close() pool.join() ``` 上述代码展示了如何在一个简单的多进程应用中集成 PyArmor。注意以下几点: - **`pyarmor_runtime()` 函数**:这是 PyArmor 提供的一个接口,用来初始化必要的运行时组件。它应该始终被放置在主程序的开头部分。 - **子进程继承机制**:由于 Windows 和 Unix 平台上的进程创建策略不同(前者采用 spawn 方式而后者通常 fork),因此必须显式调用 `pyarmor_runtime()` 来确保兼容性[^3]。 #### 使用 Subprocess 模块的情况 除了 `multiprocessing`,有时也会利用 `subprocess` 启动新的外部进程。在这种情况下,同样需要注意传入合适的环境变量以及路径信息以便新启动的过程能找到并正确处理已加密的资源[^4]。 下面是一个例子展示怎样结合 subprocess 执行带加密的 Python 文件: ```python import subprocess command = ['python', 'encrypted_script.py'] result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) print(result.stdout.decode()) if result.returncode != 0: raise Exception(f"Error occurred: {result.stderr.decode()}") ``` 这里假设目标脚本已被 PyArmor 处理过并且位于当前可访问的位置。另外记得调整 PYTHONPATH 环境变量指向包含所需依赖的地方以防缺失任何辅助数据或者动态链接库[^5]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲁通彭Mercy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值