当前位置: 首页 > news >正文

【论文速读】 | DeGPT:通过大语言模型优化反编译器输出

图片

本次分享论文为:DeGPT: Optimizing Decompiler Output with LLM

基本信息

原文作者:Peiwei Hu, Ruigang Liang, Kai Chen

作者单位:中国科学院信息工程研究所;中国科学院大学网络空间安全学院

关键词:反向工程,大语言模型,反编译器输出优化

原文链接:

https://dx.doi.org/10.14722/ndss.2024.24401

开源代码:

https://github.com/PeiweiHu/DeGPT

论文要点

论文简介:此论文提出了DeGPT框架,旨在通过大语言模型(LLM)优化反编译器输出,改进其可读性与简洁性,从而更好地辅助逆向工程师理解二进制文件。通过引入三角色机制(裁判、顾问、操作员)与微片段语义计算(MSSC)技术,DeGPT在不改变原始函数语义的前提下,显著提升了反编译器输出的分析效率和理解深度。

研究背景:反向工程是理解和分析未知二进制文件(如恶意软件)的关键技术。反编译器作为反向工程中的重要工具,能将低级汇编代码转换为高级程序语言代码。然而,现有反编译器输出存在命名无意义、结构冗余、缺乏注释等问题,降低了代码理解效率。

研究贡献:

1.提出一个新的基于LLM的端到端优化框架,通过重构语义信息和代码结构简化来提高反编译代码的可读性。

2.设计了一种三角色机制,最大化利用LLM的潜力进行代码优化。

3.引入MSSC技术,确保优化操作不改变原始代码的功能语义。

引言

DeGPT框架的核心思想是利用大语言模型的强大能力来优化反编译器的输出,使其更加易于理解和分析。尽管反编译器已经能够将二进制代码转换为高级语言代码,但由于缺乏有效的语义信息恢复能力,如变量命名和注释添加,这些输出往往难以被直接利用。DeGPT通过一种创新的三角色机制(裁判R_ref、顾问R_adv、操作员R_ope)和微片段语义计算(MSSC)方法,旨在克服现有方法的局限性,优化反编译输出的结构和语义信息,提高逆向工程师对二进制文件的理解。

背景知识

反向工程是通过分析软件的二进制形式来理解其工作原理和逻辑结构的过程。反编译器是反向工程中不可或缺的工具,它能够将低级别的汇编代码转换成更易于理解的高级程序语言代码。然而,由于反编译过程中的语义信息丢失,反编译器输出的代码往往缺乏有效的命名和注释,使得逆向工程师难以快速理解代码的意图和结构。

论文方法

理论背景: DeGPT利用大语言模型(LLM)的强大能力来优化反编译输出,通过增加语义信息和改进代码结构来提高代码的可读性和理解度。

方法实现: DeGPT采用三角色机制(裁判、顾问、操作员)来指导LLM进行优化操作,确保优化过程不改变代码的原始功能语义。同时,引入了微片段语义计算(MSSC),通过比较优化前后代码的功能行为,确保优化操作不会引入语义误差。

图片

实验

实验设置:实验在多个数据集上进行,包括实用命令行工具、恶意软件、音频处理库和算法实现等不同类型的软件。

实验结果:DeGPT在不同数据集上显示出显著的优化效果,包括降低认知负担24.4%,以及在变量命名和注释添加方面的显著改进,62.9%的注释能为逆向工程师提供实用的语义帮助。

论文结论

DeGPT框架成功地优化了反编译器输出,通过改进代码的可读性和结构简洁性,在不改变原始函数语义的前提下,显著提高了逆向工程师分析二进制文件的效率和准确性。这项工作展示了大语言模型在软件逆向工程领域的巨大潜力和应用价值。

原作者:论文解读智能体

润色:Fancy

校对:小椰风

图片

http://www.lryc.cn/news/313861.html

相关文章:

  • 【DP】蓝桥杯第十三届-费用报销
  • 15. C++泛型与符号重载
  • 老司机都懂的!【打赏】完美运营的最新视频打赏系统
  • JavaWeb笔记 --- 二、Maven
  • 【C++】C++11---右值引用和移动语义
  • 消息队列-kafka-消息发送流程(源码跟踪) 与消息可靠性
  • 机器学习笔记 计算机视觉中的测距任务常见技术路线
  • 云计算 3月8号 (wordpress的搭建)
  • 【CSS】(浮动定位)易忘知识点汇总
  • Vitual Box虚拟机打开后,键盘鼠标失效
  • 宠物空气净化器值得入手吗?选购宠物空气净化器关注哪些方面?
  • 前端发起请求,后端模型需处理很久,怎样设置前端直接完成请求响应,后端计算完在返回结果给前端?
  • DDD领域驱动设计
  • 网络编程第1天
  • Springboot--整合Logback 日志框架(Maven)
  • 【考研数学】李林《880》vs 李永乐《660》完美使用搭配
  • Java面试之消息中间件
  • 网工学习 DHCP配置-接口模式
  • 【GO】语言特点 | Go和Java的对比
  • USB2.0设备检测过程信号分析
  • Go语言物联网开发安科瑞ADW300/4G电能表数据上传mqtt平台-电表接线到传输数据完整流程
  • LabVIEW质谱仪开发与升级
  • SwiftUI之DragGesture
  • 主网NFT的发布合约
  • 分享2024年在家轻松兼职赚钱的5个副业
  • 电脑小问题:Windows更新后黑屏
  • C++指针(四)万字图文详解!
  • 商品管理系统设计100问?
  • Python的反射
  • 【Spring云原生系列】Spring RabbitMQ:异步处理机制的基础--消息队列 原理讲解+使用教程