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. https://github.com/PeiweiHu/DeGPT/blob/0f632cc52fabd70c7e7b3b9ad1ed7aef517a3714/README.md
  5. https://github.com/PeiweiHu/DeGPT/blob/0f632cc52fabd70c7e7b3b9ad1ed7aef517a3714/degpt/chat.py
  6. https://github.com/PeiweiHu/DeGPT/blob/0f632cc52fabd70c7e7b3b9ad1ed7aef517a3714/degpt/role.py
  7. https://github.com/PeiweiHu/DeGPT/blob/0f632cc52fabd70c7e7b3b9ad1ed7aef517a3714/degpt/mssc.py
  8. https://github.com/PeiweiHu/cinspector/blob/e827cfd9fccb1c5d7c4e0169c0da0bd2006de63b/README.md
  9. https://github.com/PeiweiHu/cinspector/blob/e827cfd9fccb1c5d7c4e0169c0da0bd2006de63b/LICENSE
  10. https://github.com/PeiweiHu/cinspector/blob/e827cfd9fccb1c5d7c4e0169c0da0bd2006de63b/setup.py