2024 · 会议论文
DeGPT:使用大语言模型优化反编译器输出
DeGPT: Optimizing Decompiler Output with LLM
通过三个协同角色选择、提出并检查修改,改进已有的类 C 反编译输出。其流程简化代码结构、添加注释并重命名变量,在接受结构修改前,使用微代码片段语义计算比较模拟的符号值与调用。作者以四个代码库中的 620 个函数评估可读性与命名效果,并分别测试保留与剥离符号的版本。
研究范围与局限
报告的 24.4% 降幅来自保留符号版本输出的 Halstead 工作量代理指标,并非直接测得的人力节省。62.9% 的注释结果是人工判定正确的注释中,具有非平凡信息者的平均占比。MSSC 是过程内启发式检查:调用被抽象处理,循环转化为分支;解析、别名与路径增长仍有限制。其 80 个案例的人工审查报告准确率为 84%、召回率为 85%,其中漏过三处有害修改。这支持辅助理解伪代码,不能保证二进制等价、整程序可重新编译或恢复原始源码。
与本合集的关联
将可读性改写与经过明确评估的语义变化过滤器结合,为大语言模型辅助逆向工程提供具体方法。
发表与复核详情
- 发表载体
- NDSS 2024
- 发表状态
- 会议论文
- 出版/提交日期
- 2024 年(具体日期未核实)
- 日期依据
- NDSS 官方论文与出版方提交的 Crossref 元数据确认出版年份为 2024;会议日期与 DOI 注册日期不能据此推定具体出版日。
- DOI
- 10.14722/ndss.2024.24401
出版方与 PDF 的标题、三位作者顺序和 DOI 一致;未核实到 arXiv 标识符或论文集页码范围。2024 年 9 月的产物快照晚于论文,没有发布标签,也未声明项目许可证。其 README 要求手动安装 cinspector、openai==1.28.1、tiktoken==0.2.0 和 python-levenshtein,但未声明 DeGPT 所需的最低 Python 版本。当前代码从 config.ini 读取模型、API 密钥和端点,与 README 的 chat.py 配置示例不同,并采用 Unix 风格的 SIGALRM 超时机制。单独固定版本的 cinspector 依赖声明采用 WTFPL,并要求 tree-sitter==0.20.4;这不代表 DeGPT 或其中的第三方样本获得相同授权。论文主要采用温度为 0.2 的 gpt-3.5-turbo 与 Ghidra 10.2.3。
来源复核于
已依据论文及一手来源复核。请通过原始论文或 BibTeX 引用原作者。
综述中的讨论
一手来源
- https://www.ndss-symposium.org/ndss-paper/degpt-optimizing-decompiler-output-with-llm/
- https://www.ndss-symposium.org/wp-content/uploads/2024-401-paper.pdf
- https://api.crossref.org/works/10.14722/ndss.2024.24401
- README.md GitHub · PeiweiHu/DeGPT · 修订 0f632cc
- degpt/chat.py GitHub · PeiweiHu/DeGPT · 修订 0f632cc
- degpt/role.py GitHub · PeiweiHu/DeGPT · 修订 0f632cc
- degpt/mssc.py GitHub · PeiweiHu/DeGPT · 修订 0f632cc
- README.md GitHub · PeiweiHu/cinspector · 修订 e827cfd
- LICENSE GitHub · PeiweiHu/cinspector · 修订 e827cfd
- setup.py GitHub · PeiweiHu/cinspector · 修订 e827cfd