【论文速读】 | 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
校对:小椰风

相关文章:
【论文速读】 | DeGPT:通过大语言模型优化反编译器输出
本次分享论文为:DeGPT: Optimizing Decompiler Output with LLM 基本信息 原文作者:Peiwei Hu, Ruigang Liang, Kai Chen 作者单位:中国科学院信息工程研究所;中国科学院大学网络空间安全学院 关键词:反向工程&…...
【DP】蓝桥杯第十三届-费用报销
#include<iostream> #include<algorithm> #include<cstring> #include<set> #include<queue> using namespace std; const int N1010; int dp[N][5010];//dp[i][j]:选到第i个物品是否能取到价值j; int month[13]{0,31,28,31,30,31,30…...
15. C++泛型与符号重载
【泛型编程】 若多组类型不同的数据需要使用相同的代码处理,在C语言中需要编写多组代码分别处理,这样做显然太过繁琐,C增加了虚拟类型,使用虚拟类型可以实现一组代码处理多种类型的数据。 虚拟类型是暂时不确定的数据类型&#…...
老司机都懂的!【打赏】完美运营的最新视频打赏系统
完美运营的最新视频打赏系统优于市面上95%的打赏系统,与其他打赏系统相比,功能更加强大,完美运营且无bug。支付会调、短链接生成、代理后台、价格设置和试看功能等均没有问题。 以上为原简介,经测试验证。成功搭建并可以正常进入…...
JavaWeb笔记 --- 二、Maven
二、Maven Maven概述 所有的IDE创建的Maven项目都可以使用 Maven简介 Maven模型 Maven常用命令 Maven生命周期 Maven坐标 依赖管理 dpendencies:依赖 依赖范围...
【C++】C++11---右值引用和移动语义
目录 1、什么是左值引用和右值引用2、左值引用与右值引用比较3、右值引用使用场景和意义4、右值引用引用左值的分析5、完美转发 1、什么是左值引用和右值引用 传统的C语法中就有引用的语法,而C11中新增了的右值引用语法特性,所以从现在开始我们之前学习…...
消息队列-kafka-消息发送流程(源码跟踪) 与消息可靠性
官方网址 源码:https://kafka.apache.org/downloads 快速开始:https://kafka.apache.org/documentation/#gettingStarted springcloud整合 发送消息流程 主线程:主线程只负责组织消息,如果是同步发送会阻塞,如果是异…...
机器学习笔记 计算机视觉中的测距任务常见技术路线
一、计算机视觉中的测距任务 测距是计算机视觉中的一项关键任务,涉及测量物体和相机之间的距离。这些信息可用于多种应用,包括机器人、自动驾驶汽车和增强现实。测距技术有很多种,包括主动式和被动式,每种技术都有自己的优点和局限性。主动测距技术,例如飞行时间、结构光和…...
云计算 3月8号 (wordpress的搭建)
项目wordpress 实验目的: 熟悉yum和编译安装操作 锻炼关联性思维,便于以后做项目 nginx 编译安装 1、安装源码包 [rootlinux-server ~]# yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel [rootlinux-server ~]# wget http://nginx.…...
【CSS】(浮动定位)易忘知识点汇总
浮动特性 加了浮动之后的元素,会具有很多特性,需要我们掌握的. 1、浮动元素会脱离标准流(脱标:浮动的盒子不再保留原先的位置) 2、浮动的元素会一行内显示并且元素顶部对齐 注意: 浮动的元素是互相贴靠在一起的(不会有缝隙)&…...
Vitual Box虚拟机打开后,键盘鼠标失效
Vitual Box虚拟机打开后,键盘鼠标失效 作者在使用Vitual Box虚拟机软件时,偶然发现打开VitualBox后,鼠标和键盘均无法使用。 你以为是“主机热键”引起的?NO! 废话少说 直接上干货: 在VitualBox设置下有…...
宠物空气净化器值得入手吗?选购宠物空气净化器关注哪些方面?
一开始养猫时,每天看着可爱的猫咪在家里快乐奔跑,让人心情愉悦。然而,作为铲屎官都知道,猫咪会掉毛,特别是在换毛期间,地板、沙发上都会有一大堆猫毛,甚至衣服也可能沾满猫毛。养猫家庭中&#…...
前端发起请求,后端模型需处理很久,怎样设置前端直接完成请求响应,后端计算完在返回结果给前端?
在这种情况下,可以采用异步处理的方式来解决。具体步骤如下: 前端发起请求:前端向后端发送请求,但是不等待后端处理完成而是立即得到响应。 后端异步处理:后端接收到请求后,不立即进行处理,而是…...
DDD领域驱动设计
一、什么是领域驱动设计DDD 领域驱动设计(Domain-Driven Design,DDD)是一种软件开发方法论,它提出了一组关于如何设计和构建软件系统的原则和方法。 二、DDD的诞生是为了解决哪些问题 对复杂业务领域的理解不足:传统…...
网络编程第1天
OSI的七层网络模型有哪些,每一层有什么作用? (1)应用层 负责处理不同应用程序之间的通信,需要满足提供的协议,确保数据发送方和接收方的正确 应用层提供的协议: HTTP:超文本传输…...
Springboot--整合Logback 日志框架(Maven)
文章目录 前言一、Logback 日志框架介绍:二、整合:2.1 引入jar2.2 logback.xml 文件配置:2.3 日志输出:2.3.1 方式一:2.3.2 方式二: 2.3 日志输出结果展示: 三、扩展:3.1 日志输出格…...
【考研数学】李林《880》vs 李永乐《660》完美使用搭配
没有说谁一定好,只有适不适合自身情况,针对自身弱点选择性价比才最高。 两者侧重点不同,660适合强化前期,弥补基础的不足,880适合强化后期,题型全面,提高我们对综合运用知识的能力。 选择习题…...
Java面试之消息中间件
消息队列 优缺点 特点 解耦异步削峰缺点 系统可用性降低 兜底:代码中try、catch 异常捕捉后直接进行数据库操作,或者 搭建高可用集群,Kafka集群、RocketMQ集群提高复杂度 消息重复(消费端的幂等性设计)、消息丢失(主要集中RabbitMQ)、消息的顺序(业务:1,下单 2,支付 3,发…...
网工学习 DHCP配置-接口模式
网工学习 DHCP配置-接口模式 学习DHCP总是看到,接口模式、全局模式、中继模式。理解起来也不困难,但是自己动手操作起来全是问号。跟着老师视频配置啥问题没有,自己组建网络环境配置就是不通,悲催。今天总结一下我学习接口模式的…...
【GO】语言特点 | Go和Java的对比
while循环 go语言中没有while循环,一般都是用for循环替代 while (条件) {} // Java的for循环for true {} // go 语言中会用一个为真的表达式作为是否 会进入循环的条件,也就是把其他语言的for和while合并了for循环 for (Type item : list) {} // j…...
如何快速掌握WebPlotDigitizer:图表数据提取的终极指南
如何快速掌握WebPlotDigitizer:图表数据提取的终极指南 【免费下载链接】WebPlotDigitizer Computer vision assisted tool to extract numerical data from plot images. 项目地址: https://gitcode.com/gh_mirrors/we/WebPlotDigitizer WebPlotDigitizer是…...
DistroAV终极指南:5步构建专业级网络视频传输系统
DistroAV终极指南:5步构建专业级网络视频传输系统 【免费下载链接】obs-ndi DistroAV (formerly OBS-NDI): NDI integration for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-ndi DistroAV(原OBS-NDI)是专为OBS Stud…...
Real-Anime-Z效果展示:real-anime-z_19生成的金属质感机甲少女高清图集
Real-Anime-Z效果展示:real-anime-z_19生成的金属质感机甲少女高清图集 1. 惊艳的2.5D视觉体验 Real-Anime-Z是一款基于Stable Diffusion的写实向动漫风格大模型,它创造性地融合了写实与动漫两种风格,形成了独特的2.5D视觉效果。这种风格在…...
7个秘诀快速掌握RPFM:全面战争模组编辑器的终极指南
7个秘诀快速掌握RPFM:全面战争模组编辑器的终极指南 【免费下载链接】rpfm Rusted PackFile Manager (RPFM) is a... reimplementation in Rust and Qt5 of PackFile Manager (PFM), one of the best modding tools for Total War Games. 项目地址: https://gitco…...
产品经理和开发者必看:如何为你的项目规划Alpha、Beta到Release的发布路线图?
产品经理和开发者必看:如何为你的项目规划Alpha、Beta到Release的发布路线图? 在软件开发的旅程中,从最初的构想到最终的产品发布,每一个阶段都承载着不同的目标和挑战。对于产品经理、项目经理和技术负责人来说,如何科…...
为什么Windows用户需要Coolapk-UWP桌面客户端?
为什么Windows用户需要Coolapk-UWP桌面客户端? 【免费下载链接】Coolapk-UWP 一个基于 UWP 平台的第三方酷安客户端 项目地址: https://gitcode.com/gh_mirrors/co/Coolapk-UWP 你是否厌倦了在小屏幕上浏览酷安社区?是否希望在电脑大屏幕上也能享…...
告别fix bond/react:手写Python交联脚本,让你的LAMMPS聚合物模拟更精准
告别fix bond/react:手写Python交联脚本,让你的LAMMPS聚合物模拟更精准 在分子动力学模拟领域,聚合物交联过程的精确建模一直是科研人员面临的挑战。LAMMPS作为主流分子动力学软件,虽然提供了fix bond/create和fix bond/react等内…...
从Python打包exe到逆向分析:一次搞定pyinstxtractor和uncompyle6的使用
Python逆向工程实战:从打包exe到源码还原的完整指南 逆向分析Python打包的exe文件是一项兼具挑战性和实用性的技能。无论是安全研究人员、开发者还是技术爱好者,掌握这项技术都能让你在面对未知Python程序时游刃有余。本文将带你深入探索Python逆向工程的…...
【车载场景专属】Dify调试避坑手册:92%工程师忽略的3类时序错位(RT-Thread+TensorRT环境实测)
第一章:Dify车载问答调试的核心挑战与定位在车载智能座舱场景中,Dify作为低代码LLM应用开发平台,其问答能力需同时满足低延迟响应、离线可用性、车规级稳定性及多模态上下文理解等严苛要求。调试过程并非单纯调整提示词或模型参数,…...
SDXL 1.0多模态协同:灵感画廊输出图像与配套生成的诗意文案同步创作演示
SDXL 1.0多模态协同:灵感画廊输出图像与配套生成的诗意文案同步创作演示 1. 引言:当AI成为你的艺术搭档 想象一下,你脑海中浮现出一个绝美的画面:黄昏时分,一位身着长裙的舞者,在空旷的剧院里,…...
