在 GitHub 上加星Star1.1k 个星标

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 引用原作者。

报告条目过时 建议修正翻译

综述中的讨论

一手来源

  1. https://www.ndss-symposium.org/ndss-paper/degpt-optimizing-decompiler-output-with-llm/
  2. https://www.ndss-symposium.org/wp-content/uploads/2024-401-paper.pdf
  3. https://api.crossref.org/works/10.14722/ndss.2024.24401
  4. README.md GitHub · PeiweiHu/DeGPT · 修订 0f632cc
  5. degpt/chat.py GitHub · PeiweiHu/DeGPT · 修订 0f632cc
  6. degpt/role.py GitHub · PeiweiHu/DeGPT · 修订 0f632cc
  7. degpt/mssc.py GitHub · PeiweiHu/DeGPT · 修订 0f632cc
  8. README.md GitHub · PeiweiHu/cinspector · 修订 e827cfd
  9. LICENSE GitHub · PeiweiHu/cinspector · 修订 e827cfd
  10. setup.py GitHub · PeiweiHu/cinspector · 修订 e827cfd
↑↓ 移动↵ 打开⌘↵ 新标签页