【文档说明】软件逆向分析介绍解读课件.ppt,共(19)页,678.000 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-50523.html
以下为本文档部分文字说明:
软件逆向工程简介第1页,共19页。目录1.软件逆向工程的概念2.软件逆向工程的应用3.软件逆向分析的一般流程4.软件逆向分析的发展现状5.实际工作中相关的逆向分析第2页,共19页。1.软件逆向工程的概念•正向工程解决了功能的实现,说明了哪些功能需要增加
和删除;•逆向工程解决了程序理解的问题;•再工程改变了系统的功能和方向,最具根本和深远影响的扩展(再工程除了正向和逆向的分析,还有重构的问题,它是在抽象的层次上改变表示形式,改变了系统,但不改变功能)。抽象逻辑设计具体物理实现
正向工程(ForwardEngineering)逆向工程(ReverseEngineering)再工程(Reengineering)第3页,共19页。1.软件逆向工程的概念•逆向工程从任何人造的东西中提取知识或者设计规划的过程。说明:逆向工程的概念早在计算机或者
说现代技术出现之前就已经存在。因此逆向工程的范围也不止计算机领域,还包括科学研究和工业制造等。•计算机领域的逆向工程逆向分析硬件逆向软件逆向系统级逆向代码级逆向大范围的分析观察,整体把握程序二进制码中提取设计理念和算法第4页,共19页。1.软件逆向工程
的概念•软件逆向工程高级语言程序中间语言程序具体目标代码编译、链接exelibdllsys反编译汇编语言程序反汇编编译和反编译不一定要生成汇编代码,一般生成某种设计好的中间语言。但在反编译的二进制解码过程中,首先会生成一种类汇编或汇编代码,因
此二进制解码也可称为反汇编,并且反编译的过程中中间代码也有很多级别,类汇编或汇编代码只是低级中间语言。编译器或反编译器作词法和语法分析第5页,共19页。2.软件逆向工程的应用•帮助理解–交互协同工作–算法的理解学习–代码检查•比较代码•查找恶意软件•查找软件漏洞•查找软件
BUG•代码编译–平台上优化–平台间移植–修复BUG–添加新的特性–代码恢复Atari和Nintendo游戏开发兼容根据算法特征进行(主要密码算法)比较程序的相似性漏洞的利用和挖掘(还需结合软件调试技术)分析理解目标代码,学习吸收别人的技术思路,
并向更深层次发展在逆向分析得到的代码高级抽象表示基础上进行正向工程第6页,共19页。2.软件逆向工程的应用•实际工作重要应用——反汇编–漏洞挖掘和利用对于操作系统和应用软件,漏洞的挖掘和利用,是主动攻击的重要手段,一旦成功效果明显,应用起来也比较广泛,难度工作量较大,现
阶段的一般研究方法是在反汇编分析的基础上,结合动态跟踪、调试技术来进行。–Rootkit的深入RootkitVSHIPS(主机入侵检测):胜负取决于谁做得更底层,谁知道更多没有公开的底层内容,这需要在反汇编的基
础上进行内核的调试,探索底层未知的部分,网上发表的都是过时的或者不是非常重要的“点拨”。原意是根权限工具,而实际中常指使用了Rootkit技术的病毒、木马,他与传统木马(R3)的不同在于:通过加载一个驱动或者其它手段,使部分代码或者全部代码都在内核(R0)中进行•熟练的汇编语言基
础•熟练掌握常用反汇编调试工具的使用•熟练掌握相关操作系统的知识及调试技巧•《软件调试》,张银奎,电子工业出版社•《ROOTKITS—Windows内核的安全防护》,Butler,J/Hoglund,
G,清华大学出版社•《ReverseEngineeringCodewithIDAPro》第7页,共19页。2.软件逆向工程的应用•实际工作重要应用——反汇编(续)–代码恢复理解分析有价值的二进制程序,获取并理解其(关键)功能结构,提高自己的技术水平,扩展学习、获取技术的渠道,摆脱自身研究的
不足。–算法的识别利用(密码)算法在汇编级别的特征,进行相关的算法识别;当然也有在抽象语言级别上进行的(现阶段研究不太成熟,非主要手段)。可能有些时候还需要脱壳方面的技术第8页,共19页。3.软件逆向分析的一般流程解码
/反汇编(Decode/Disassemble)目标二进制代码中间语言翻译(IntermediaLanguageTranslate)数据流分析(DataFlowAnalysis)控制流分析(ControlFlowAnalysis)其它分析和优化(Others)高级抽象代码
汇编/类汇编代码各级中间语言第9页,共19页。4.软件逆向分析的发展现状根据应用用途大致分为反汇编核反编译两个发展方向•反汇编–IDA•全名(IDAProDisassemblerandDebugger),DataRescue公司的强大
专业反汇编调试软件;•最好的静态反汇编工具,针对80X86架构作了许多的优化和额外的识别分析(现今分析最为透彻的产品),当然也支持其它架构的处理器,另外也支持跟踪调试。•强大的功能扩展–Processor:扩展处理器支持–Plug-in:IDA功能扩展–
Loader:支持不同的可执行文件支持–Debugger:不同平台和(远程)调试的支持静态密码算法识别有很广泛应用,特别是嵌入式系统的非X86结构研究比较成熟(OpenRCE)第10页,共19页。4.软件逆向分析的发展现状–OllyDbg32位Windows系统环境下的二进制文件分析调试工
具,其重点在于动态跟踪分析二进制代码,但由于这些操作都是在目标代码进行反汇编后进行,因此也常被作为一款反汇编工具使用。–D32Aam国产的针对Windows平台下PE格式文件的优秀反汇编器,其提供快速的静态反汇编和16进制文件编辑功能,另外还有一些便利的内存操作和修改功能。–其它开源反汇编引擎静
态反汇编:•IDA最全面强大;•C32Asm比较轻快;第11页,共19页。4.软件逆向分析的发展现状•反编译–dcc/UQBT/Boomerang•dcc:CristinaCifuentes在澳大利亚昆士兰大学博士论文中的反编译
原型系统,作为从DOS到C反编译EXE文件的先驱代表,主要通过传统编译优化技术和图论来执行相关分析操作,1994年停止发展更新,有许多的局限,只是概念上的证明程序。•UQBT:主要作者CristinaCifuentes,其作为一个通用的二进制翻译框架,输入的二进制代码通过逆向分析产生高
级的C代码,再通过普通的C编译器编译和优化,最终生成目标平台上对应代码。UQBT目标识二进制翻译,但其框架中前端技术可供逆向分析借鉴使用。•Boomerang主旨为通过开源社区发展一个通用的反编译器。其重用了d
cc和UQBT中的相关技术,并成为新代码逆向研究的主题,不过其也存在不足。现研究的是动态二进制翻译——UQDBT第12页,共19页。4.软件逆向分析的发展现状–CodeSurfer和CodeSufer/x86•CodeSurfer:GRAMMATECH公司的一款功
能强大的代码分析、理解、查看工具。•CodeSurfer/x86:整合IDAPro和CodeSufer两大工具,后者在前者反汇编的结果上进行逆向分析,目标是Intex86下的可执行文件,作用在于帮助用户进行代码理解和安全性分析等,并被美国空军、海军和其它安全部门广
泛采用。IDAPro解析二进制构造控制流图(CFG)连接器Connector值集分析(VSA)CodeSurfer构建系统依赖图(SDG)代码浏览安全分析反编译器代码重构用户脚本CoderSurfer/x86可执行
文件第13页,共19页。4.软件逆向分析的发展现状–Hex-rays反汇编调试器IDA的商业插件,针对Intelx86系列下的程序,在IDA反汇编的基础上进行全局或者拒不的代码逆向分析,得到类C的高级代码表示。–其
它国外对逆向分析的研究一直在发展进行,国内的研究在80年代合肥工业大学进行一系列的研究后,没有再进行较为系统的研究开发。第14页,共19页。5.实际工作中相关的逆向分析结合实际工作,可能使用最多的逆向分析技
术为反汇编,其次是(局部)反编译。•反汇编常用工具IDA、OllyDbg和C32Asm–IDA:全面系统的静态分析,把握整体结构和某些代码细节;–OllDbg:动态跟踪调试常用软件;–C32Asm:快速
静态反汇编和修改。工具结合使用,分析手段动静结合–如理解有价值的二进制程序,IDA可以全局把握整个程序的架构和构造,并在可知的执行路径上进行相关的实际跟踪;–又如免杀处理OllyDbg和C32Asm都可以结合使用进行免杀时的脱壳和写覆盖处理;–密码算法的识别中IDA的运用。请输入内容第15页
,共19页。5.实际工作中相关的逆向分析•反编译常用工具Hex-rays,主要用于局部函数的反编译,便于理解函数。•其它–内核调试深入底层研究的重要必备手段,也是之后技术突破所必须的,现阶段内核调试都是用Windbg进行联机调试,而调试的代码及汇编语言代码。–漏洞挖掘利用需要对目标代码进
行动态的跟踪调试。二者都是在反汇编的基础上进行——反汇编使前提和基础第16页,共19页。感谢您的关注第17页,共19页。1、字体安装与设置如果您对PPT模板中的字体风格不满意,可进行批量替换,一次性更改各页面字体。1.在“开始”选项卡中,点击“替换”
按钮右侧箭头,选择“替换字体”。(如下图)2.在图“替换”下拉列表中选择要更改字体。(如下图)3.在“替换为”下拉列表中选择替换字体。4.点击“替换”按钮,完成。2、替换模板模板中的图片展示页面,您可以根据需要替换这些方法一:更改
图片1.选中模版中的图片(有些图片与其他对象进是组合)。2.单击鼠标右键,选择“更改图片”,选择要替换的图第18页,共19页。赠送精美图标第19页,共19页。