一个基于 Qt Widgets 的桌面图形界面,用来配合 pycdc / pycdas 浏览 Python 字节码、查看原生反编译结果、导入 Pyarmor oneshot 输出,并在遇到不支持的 code object 时使用 AI 做兜底重建。
当前支持 Windows 和 Linux 桌面环境。



.pyc / .pyoMergedNativeAIRetry with AI 按钮或 Ctrl+R 对当前节点做 AI 重建Merged / Native / AI 源码视图Disassembly / Metadata / Prompt / Log程序默认不会把整个 .pyc 文件直接发给 AI。
它会基于当前选中的 code object 组织 prompt,通常包含:
这样做的好处是:
当前会优先查找和程序本体放在同一目录下的可执行文件:
pycdc.exepycdcpycdas.exepycdas也就是 pycdc-studio 程序本体所在目录。
也可以用环境变量覆盖:
PYCDC_STUDIO_PYCDCPYCDC_STUDIO_PYCDAS当前可以通过
Lil-House/Pyarmor-Static-Unpack-1shot
导入 Pyarmor 保护项目。
集成流程是:
oneshot/shot.pypyarmor-1shot 生成 .1shot.das 和 .1shot.cdc.pyrelease 打包流程会自动构建并内置 Pyarmor oneshot 工具链,以及所需的 Python 依赖。
对于本地开发,当前代码会优先查找安装包里自带的文件,同时也支持这个本地 clone 路径:
external/Pyarmor-Static-Unpack-1shot/oneshot/shot.py并要求 shot.py 所在目录里存在:
pyarmor-1shotpyarmor-1shot.exe另外还需要一个能运行 shot.py 的 Python 环境,并安装 pycryptodome。
如果你的目录布局不是这样,也可以用这些环境变量覆盖:
PYCDC_STUDIO_PYARMOR_PYTHONPYCDC_STUDIO_PYARMOR_SHOTPYCDC_STUDIO_PYARMOR_PYTHONPATHPYCDC_STUDIO_PYARMOR_OUTPUT_ROOT示例:
git clone https://github.com/Lil-House/Pyarmor-Static-Unpack-1shot external/Pyarmor-Static-Unpack-1shot
cmake -S external/Pyarmor-Static-Unpack-1shot/pycdc -B external/Pyarmor-Static-Unpack-1shot/build
cmake --build external/Pyarmor-Static-Unpack-1shot/build --config Release
cmake --install external/Pyarmor-Static-Unpack-1shot/build --config Release
python -m pip install pycryptodome
pycdc-studioFile -> Import Pyarmor Project...pyarmor_runtime 的项目根目录.1shot.* 结果生成并自动导入工作区说明:
PYCDC_STUDIO_PYARMOR_OUTPUT_ROOT,导入器会使用临时输出目录。在使用 AI fallback 之前,需要先在 设置 中至少配置:
Base URLAPI KeyModel当前接入的是 兼容 OpenAI 的 API。
设置页会通过 QSettings 保存 AI 配置。
如果某个字段为空,则回退到环境变量。
支持的环境变量:
PYCDC_STUDIO_AI_BASE_URLPYCDC_STUDIO_AI_API_KEYPYCDC_STUDIO_AI_MODELPYCDC_STUDIO_AI_SYSTEM_PROMPT依赖:
示例:
cmake -S . -B build
cmake --build build
pycdc-studio.pyc / .pyo,或者直接把文件夹拖进窗口File -> Import Pyarmor Project...设置 配置 AI 模型Retry with AItest/ 目录下已经带了一些较长的测试样例:
workflow_orchestrator.pyasync_batch_runner.pyplugin_config_resolver.py仓库里默认只跟踪这些 源码样例。
如果你要生成本地拖拽测试用的 .pyc,可以运行:
python test/compile_test_samples.py
生成结果会写到 test/__pycache__/。
这个项目目前仍然是实验性质。
当前 Merged 视图是比较诚实的“混合结果”:
它目前还不是真正的 inline source merger。
这个项目会配合 pycdc / pycdas 使用,而它们的上游项目采用 GPL-3.0 许可证。
pycdc:GPL-3.0pycdc / pycdas 一起分发,应同时附带对应的 GPL-3.0 许可证说明THIRD_PARTY_NOTICES.txt 中记录打包所使用的 pycdc 上游仓库和 commit上游项目地址: