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 桌面环境。 ## 截图 ### 主工作区 ![主工作区](https://raw.githubusercontent.com/ddouworld/pycdc-studio/master/docs/images/main-workspace-en.png) ### AI 备用方案 ![AI 备用方案重构](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/3055b8d1e9135438.png) ## 功能特性 - 直接打开 `.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, 云资产清单, 代码安全, 桌面应用, 源码恢复, 漏洞枚举, 跨平台桌面应用, 逆向工程