软件逆向分析介绍ppt课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
•••《 《 《软RROe件vOR层上时e调rTos,进的Keo试IEtT谁行或》knSgi知内者—,tinVeW张道核不eSri银in更的是nHdg奎o多调非IwCP,osS没试常内d电(e有,重核子w主公探要i的工th机安开索的业ID入全的底“出A侵防版P底层点r检护o社层未拨》》测内知”,)B容的。u:tl,部er胜,这分J/负H需,o取g要网l决u在上n于d,反发G谁,汇表清做华编的得大的都更学基是底出础过版社
静态密码算法识别有很广泛应用,特别是嵌入式系统的非X86结构
4.软件逆向分析的发展现状
– OllyDbg
32位Windows系统环境下的二进制文件分析调试工具,其重点 在于动态跟踪分析二进制代码,但由于这些操作都是在目标代 码进行反汇编后进行,因此也常被作为一款反汇编工具使用。
– D32Aam
国产的针对Windows平台下PE格式文件的优秀反汇编器,其提 供快速的静态反汇编和16进制文件编辑功能,另外还有一些便 利的内存操作和修改功能。
1.软件逆向工程的概念
• 逆向工程 从任何人造的东西中提取知识或者设计规划的过程。
说明:逆向工程的概念早在计算机或者说现代技术出现之前就已
经存在。因此逆向工程的范围也不止计算机领域,还包括科学研 究和工业制造等。
• 计算机领域的逆向工程
逆向分析
硬件逆向 软件逆向
大范围的分析观察,整体把握 系统级逆向
在逆向分析得到的代码高级抽象表示基础上进行正向工程
– 添加新的特性 – 代码恢复
分析理解目标代码,学习吸收别人的技术思路,并向更深层次发展
2.软件逆向工程的应用
• 实际工作重要应用——反汇编 – 漏洞挖掘和利用 对原于意操是作根系权统限和工具应,用而软实件际,中漏常洞指的使用挖了掘R和oo利tk用it技,术是的主病动毒攻、击木的 重马要,手他段与,传一统旦木马成(功R效3)果的明不显同,在应于用:起通过来加也载比一较个广驱泛动,或难者其度工 作它量手较段大,,使现部阶分代段码的或一者般全研部究代方码法都在是内在核反(R汇0编)中分进析行的基础上, 结合动态跟踪、调试技术来进行。 – Rootkit的深入
逆向工程
(Reverse Engineering)
• 正向工程解决了功能的实现,说明了哪些功能需要增加和删除;
• 逆向工程解决了程序理解的问题;
• 再工程改变了系统的功能和方向,最具根本和深远影响的扩展 (再工程除了正向和逆向的分析,还有重构的问题,它是在抽象 的层次上改变表示形式,改变了系统,但不改变功能)。
•熟练的汇编语言基础 •熟练掌握常用反汇编调试工具的使用 •熟练掌握相关操作系统的知识及调试技巧
2.软件逆向工程的应用
• 实际工作重要应用——反汇编(续)
– 代码恢复理解
分析有价值的二进制程序,获取并理解其(关键)功能结构,
提高自己的技术水平,扩展学习、获取技术的渠道,摆脱自身
研究的不足。 – 算法的识别
2.软件逆向工程的应用
• 帮助理解
Atari和Nintendo游戏开发兼容
– 交互协同工作 – 算法的理解学习
根据算法特征进行(主要密码算法)
– 代码检查 比较程序的相似性
• 比较代码
• 查找恶意软件
• 查找软件漏洞 • 查找软件BUG
漏洞的利用和挖掘(还需结合软件调试技术)
• 代码编译 – 平台上优化 – 平台间移植 – 修复BUG
数据流分析 (Data Flow Analysis)
控制流分析 (Control Flow Analysis)
其它分析和优化 (Others)
目标二进制代码 Fra Baidu bibliotek编/类汇编代码
各级中间语言
高级抽象代码
4.软件逆向分析的发展现状
根据应用用途大致分为反汇编核反编译两个发展方向 • 反汇编
– IDA • 全名(IDA Pro Disassembler and Debugger), DataRescue公司的强大专业反汇编调试软件; • 最好的静态反汇编工具,针对80X86架构作了许多的优化 和额外的识别分析(现今分析最为透彻的产品),当然也 支持其它架构的处理器,另外也支持跟踪调试。 • 强大的功能扩展 – Processor:扩展处理器支持 研究比较成熟(OpenRCE) – Plug-in:IDA功能扩展 – Loader:支持不同的可执行文件支持 – Debugger:不同平台和(远程)调试的支持
软件逆向工程简介
目录
1. 软件逆向工程的概念 2. 软件逆向工程的应用 3. 软件逆向分析的一般流程 4. 软件逆向分析的发展现状 5. 实际工作中相关的逆向分析
1.软件逆向工程的概念
再工程 (Reengineering)
正向工程 (Forward Engineering)
抽象逻辑设计
具体物理实现
– 其它开源反汇编引擎
静态反汇编:
•IDA最全面强大; •C32Asm比较轻快;
4.软件逆向分析的发展现状
• 反编译 – dcc/UQBT/Boomerang • dcc:Cristina Cifuentes在澳大利亚昆士兰大学博士论文中 的反编译原型系统,作为从DOS到C反编译EXE文件的先 驱代表,主要通过传统编译优化技术和图论来执行相关分 析操作,1994年停止发展更新,有许多的局限,只是概念 上的证明程序。 • UQBT:主要作者Cristina Cifuentes,其作为一个通用的二 进制翻译框架,输入的二进制代码通过逆向分析产生高级 的C代码,再通过普通的C编译器编译和优化,最终生成目 标平台上对应代码。UQBT目标识二进制翻译,但其框架 中前端技术可供逆向分析借鉴使用。 • Boomerang 主旨为通过开源社区发展一个通用的反编译器。 其重用了dcc和UQBT中的相关技术,并成为新代码逆向研 究的主题,不过其也存在不足。
代码级逆向
程序二进制码中提取设计理念和算法
1.软件逆向工程的概念
• 软件逆向工程
编译器或反编译器作 编译、链接 词法和语法分析
高
中
具
级
间
体 exe
语
语
目 lib
言
言
标 dll
程 序
程 序
代 码
sys
汇
编
语
反编译
言
反汇编
程
序
编译和反编译不一定要生成汇编代码,一般生成某种设计好的中间语言。 但在反编译的二进制解码过程中,首先会生成一种类汇编或汇编代码,因 此二进制解码也可称为反汇编,并且反编译的过程中中间代码也有很多级 别,类汇编或汇编代码只是低级中间语言。
可能有些时候还需要脱壳方面的技术
利用(密码)算法在汇编级别的特征,进行相关的算法识别;
当然也有在抽象语言级别上进行的(现阶段研究不太成熟,非 主要手段)。
3.软件逆向分析的一般流程
解码/反汇编 (Decode/Disassemble)
中间语言翻译 (Intermedia Language Translate)
静态密码算法识别有很广泛应用,特别是嵌入式系统的非X86结构
4.软件逆向分析的发展现状
– OllyDbg
32位Windows系统环境下的二进制文件分析调试工具,其重点 在于动态跟踪分析二进制代码,但由于这些操作都是在目标代 码进行反汇编后进行,因此也常被作为一款反汇编工具使用。
– D32Aam
国产的针对Windows平台下PE格式文件的优秀反汇编器,其提 供快速的静态反汇编和16进制文件编辑功能,另外还有一些便 利的内存操作和修改功能。
1.软件逆向工程的概念
• 逆向工程 从任何人造的东西中提取知识或者设计规划的过程。
说明:逆向工程的概念早在计算机或者说现代技术出现之前就已
经存在。因此逆向工程的范围也不止计算机领域,还包括科学研 究和工业制造等。
• 计算机领域的逆向工程
逆向分析
硬件逆向 软件逆向
大范围的分析观察,整体把握 系统级逆向
在逆向分析得到的代码高级抽象表示基础上进行正向工程
– 添加新的特性 – 代码恢复
分析理解目标代码,学习吸收别人的技术思路,并向更深层次发展
2.软件逆向工程的应用
• 实际工作重要应用——反汇编 – 漏洞挖掘和利用 对原于意操是作根系权统限和工具应,用而软实件际,中漏常洞指的使用挖了掘R和oo利tk用it技,术是的主病动毒攻、击木的 重马要,手他段与,传一统旦木马成(功R效3)果的明不显同,在应于用:起通过来加也载比一较个广驱泛动,或难者其度工 作它量手较段大,,使现部阶分代段码的或一者般全研部究代方码法都在是内在核反(R汇0编)中分进析行的基础上, 结合动态跟踪、调试技术来进行。 – Rootkit的深入
逆向工程
(Reverse Engineering)
• 正向工程解决了功能的实现,说明了哪些功能需要增加和删除;
• 逆向工程解决了程序理解的问题;
• 再工程改变了系统的功能和方向,最具根本和深远影响的扩展 (再工程除了正向和逆向的分析,还有重构的问题,它是在抽象 的层次上改变表示形式,改变了系统,但不改变功能)。
•熟练的汇编语言基础 •熟练掌握常用反汇编调试工具的使用 •熟练掌握相关操作系统的知识及调试技巧
2.软件逆向工程的应用
• 实际工作重要应用——反汇编(续)
– 代码恢复理解
分析有价值的二进制程序,获取并理解其(关键)功能结构,
提高自己的技术水平,扩展学习、获取技术的渠道,摆脱自身
研究的不足。 – 算法的识别
2.软件逆向工程的应用
• 帮助理解
Atari和Nintendo游戏开发兼容
– 交互协同工作 – 算法的理解学习
根据算法特征进行(主要密码算法)
– 代码检查 比较程序的相似性
• 比较代码
• 查找恶意软件
• 查找软件漏洞 • 查找软件BUG
漏洞的利用和挖掘(还需结合软件调试技术)
• 代码编译 – 平台上优化 – 平台间移植 – 修复BUG
数据流分析 (Data Flow Analysis)
控制流分析 (Control Flow Analysis)
其它分析和优化 (Others)
目标二进制代码 Fra Baidu bibliotek编/类汇编代码
各级中间语言
高级抽象代码
4.软件逆向分析的发展现状
根据应用用途大致分为反汇编核反编译两个发展方向 • 反汇编
– IDA • 全名(IDA Pro Disassembler and Debugger), DataRescue公司的强大专业反汇编调试软件; • 最好的静态反汇编工具,针对80X86架构作了许多的优化 和额外的识别分析(现今分析最为透彻的产品),当然也 支持其它架构的处理器,另外也支持跟踪调试。 • 强大的功能扩展 – Processor:扩展处理器支持 研究比较成熟(OpenRCE) – Plug-in:IDA功能扩展 – Loader:支持不同的可执行文件支持 – Debugger:不同平台和(远程)调试的支持
软件逆向工程简介
目录
1. 软件逆向工程的概念 2. 软件逆向工程的应用 3. 软件逆向分析的一般流程 4. 软件逆向分析的发展现状 5. 实际工作中相关的逆向分析
1.软件逆向工程的概念
再工程 (Reengineering)
正向工程 (Forward Engineering)
抽象逻辑设计
具体物理实现
– 其它开源反汇编引擎
静态反汇编:
•IDA最全面强大; •C32Asm比较轻快;
4.软件逆向分析的发展现状
• 反编译 – dcc/UQBT/Boomerang • dcc:Cristina Cifuentes在澳大利亚昆士兰大学博士论文中 的反编译原型系统,作为从DOS到C反编译EXE文件的先 驱代表,主要通过传统编译优化技术和图论来执行相关分 析操作,1994年停止发展更新,有许多的局限,只是概念 上的证明程序。 • UQBT:主要作者Cristina Cifuentes,其作为一个通用的二 进制翻译框架,输入的二进制代码通过逆向分析产生高级 的C代码,再通过普通的C编译器编译和优化,最终生成目 标平台上对应代码。UQBT目标识二进制翻译,但其框架 中前端技术可供逆向分析借鉴使用。 • Boomerang 主旨为通过开源社区发展一个通用的反编译器。 其重用了dcc和UQBT中的相关技术,并成为新代码逆向研 究的主题,不过其也存在不足。
代码级逆向
程序二进制码中提取设计理念和算法
1.软件逆向工程的概念
• 软件逆向工程
编译器或反编译器作 编译、链接 词法和语法分析
高
中
具
级
间
体 exe
语
语
目 lib
言
言
标 dll
程 序
程 序
代 码
sys
汇
编
语
反编译
言
反汇编
程
序
编译和反编译不一定要生成汇编代码,一般生成某种设计好的中间语言。 但在反编译的二进制解码过程中,首先会生成一种类汇编或汇编代码,因 此二进制解码也可称为反汇编,并且反编译的过程中中间代码也有很多级 别,类汇编或汇编代码只是低级中间语言。
可能有些时候还需要脱壳方面的技术
利用(密码)算法在汇编级别的特征,进行相关的算法识别;
当然也有在抽象语言级别上进行的(现阶段研究不太成熟,非 主要手段)。
3.软件逆向分析的一般流程
解码/反汇编 (Decode/Disassemble)
中间语言翻译 (Intermedia Language Translate)