ddouworld/pycdc-studio
GitHub: ddouworld/pycdc-studio
一个基于 Qt 的 Python 字节码可视化探索桌面工具,集成 pycdc 反编译引擎并在传统反编译失败时提供 AI 辅助重构能力。
Stars: 25 | Forks: 2
# pycdc-studio
[中文说明](./README_CN.md)
一个用于探索 Python 字节码的 Qt Widgets 桌面 UI,支持配合 `pycdc` / `pycdas` 使用,检查原生反编译结果,并在不支持的字节码对象上使用 AI 备用方案进行重试。
该应用程序同时支持 Windows 和 Linux 桌面环境。
## 截图
### 主工作区

### AI 备用方案

## 功能特性
- 直接打开 `.pyc` / `.pyo` 文件
- 将文件夹拖入窗口,递归发现支持的字节码文件
- 在左侧树形图中统一显示所有发现的文件
- 检查模块、类、函数、lambda 和推导式的代码对象树
- 比较:
- `Merged`(合并视图)
- `Native`(原生视图)
- `AI`
- 查看每个节点的元数据和反汇编结果
- 预览发送给 AI 备用模型的确切提示词
- 使用醒目的操作按钮或 `Ctrl+R` 通过 AI 重试当前选定的节点
## 当前 UI 结构
- 左侧:代码对象树
- 中间:合并 / 原生 / AI 源码视图
- 右侧:反汇编 / 元数据 / 提示词 / 日志
## AI 备用方案
默认情况下,应用程序不会发送整个 `.pyc` 文件。
它根据当前选定的代码对象构建提示词,包括:
- 限定名
- 对象类型
- names / varnames / consts 预览
- 原生错误
- 反汇编代码
这使得备用重构专注于选定的节点,而不是整个文件。
## pycdc 集成
目前,应用程序优先使用应用程序二进制文件旁边的本地可执行文件,并会寻找:
- `pycdc.exe`
- `pycdc`
- `pycdas.exe`
- `pycdas`
要求它们与 `pycdc-studio` 应用程序二进制文件位于同一目录中。
您可以通过环境变量覆盖它们:
- `PYCDC_STUDIO_PYCDC`
- `PYCDC_STUDIO_PYCDAS`
## AI 配置
在使用 AI 备用方案之前,请打开 `Settings` 并至少配置:
- `Base URL`
- `API Key`
- `Model`
当前的客户端需要一个 **OpenAI 兼容 API** 端点。
设置对话框使用 `QSettings` 存储提供商配置,当字段为空时回退到环境变量。
支持的环境变量:
- `PYCDC_STUDIO_AI_BASE_URL`
- `PYCDC_STUDIO_AI_API_KEY`
- `PYCDC_STUDIO_AI_MODEL`
- `PYCDC_STUDIO_AI_SYSTEM_PROMPT`
## 构建
依赖项:
- Qt 6 Widgets
- Qt Network
- CMake
- C++17 编译器
示例:
```
cmake -S . -B build
cmake --build build
```
## 使用方法
1. 启动 `pycdc-studio`
2. 打开一个 `.pyc` / `.pyo` 文件,或将文件夹拖入窗口
3. 从顶级菜单打开 `Settings`,并在需要使用 AI 备用方案时配置您的 AI 模型
4. 在树形图中选择一个文件或代码对象
5. 检查原生输出、反汇编结果、元数据和提示词上下文
6. 如果原生反编译不完整或错误,在选定节点上使用 `Retry with AI`
## 测试样本
更长的测试用例包含在 `test/` 目录下:
- `workflow_orchestrator.py`
- `async_batch_runner.py`
- `plugin_config_resolver.py`
- 以及其他几个较小的样本
此代码仓库仅跟踪**源代码**样本。
要生成本地 `.pyc` 文件以进行拖放测试:
```
python test/compile_test_samples.py
```
该脚本会将编译后的字节码写入 `test/__pycache__/`。
## 注意事项
此项目仍处于实验阶段。
当前的 `Merged` 视图是一个真实的混合文档:
- 原生源码(如果可用)
- 按代码对象附加的 AI 备用补丁
它尚未成为完整的内联源码合并器。
## 许可证
此项目集成了 `pycdc` / `pycdas`,其上游项目基于 **GPL-3.0** 许可。
- `pycdc`:GPL-3.0
- 捆绑 `pycdc` / `pycdas` 的发布包应包含 GPL-3.0 声明
- 发布包还会在 `THIRD_PARTY_NOTICES.txt` 中记录所捆绑的上游 `pycdc` 代码库和提交
完整的许可证详情请参阅上游项目:
- [zrax/pycdc](https://github.com/zrax/pycdc)
标签:AI辅助, Bash脚本, LLM代码生成, OpenAI API, pycdas, pycdc, .pyc文件, PyQt, PySide, Python反编译, Python字节码, Qt Widgets, 云资产清单, 代码安全, 桌面应用, 源码恢复, 漏洞枚举, 跨平台桌面应用, 逆向工程