《软件逆向分析》PPT课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《《软件逆向分析》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《软件逆向分析》PPT课件.ppt(46页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、逆向分析逆向分析1.逆向工程概述逆向工程概述2.调试器和反器和反汇编器器3.逆向分析逆向分析实例例4.断点断点5.专用工具用工具逆向工程逆向工程逆向工程,Reverse Engineering,R.E.工程(Engineering):从原理到产品逆向工程的基本思想:从产品到原理(再到产品)军事中的逆向工程USA,Boeing B-29USSR,TU-4军事中的逆向工程前苏联SVD狙击步枪国产79/85狙击步枪软件逆向工程软件逆向工程是通过反汇编和调试等手段,分析计算机程序的二进制可执行代码从而获得程序的算法细节和实现原理的技术。研究对象:没有公开源代码的计算机程序,主要是已经经过编译的二进制可
2、执行代码(如Win32平台上的PE文件,包括exe,dll等文件格式)与开放源代码的开源软件不同,用户无法修改已经编译成型的可执行文件,或者无法获知程序内部的算法。逆向工程类似于软件工程中的“黑盒”测试。需要借助跟踪调试手段,从二进制机器代码开始分析程序。工作过程与软件工程相反,这就是“逆向工程”这个名词中“逆向”的来源。软件逆向工程逆向工程的主要应用软件破解(cracking):破解软件的版权保护措施,让用户不支付授权费用就可以无限制使用软件的全部功能;病毒和恶意程序(malware)分析:分析病毒、恶意程序的传播机制和危害并设计出解决办法;系统漏洞分析:分析漏洞原理,设计补丁程序或者编写利
3、用程序(Exploit)。分析不公开的文件格式、协议等;分析Windows或Mac平台上的硬件驱动程序,编写linux下的相应驱动;挖掘消费电子产品的潜能;挖掘操作系统未文档化的API,发现更多系统内幕;计算机犯罪取证逆向工程的其他应用逆向工程的历史最早出现在20世纪80年代,APPLEII主机上的游戏破解。逆向工程最早的应用是软件破解。合法性至今存在很大争议。Windows End-User License Agreement总结逆向工程的分析方法是从一个已经成型的产品开始逐步向下分解,以期最后在更高的层次上抽象出产品的技术细节。目目 录1.逆向工程概述逆向工程概述2.调试器和反器和反汇编器
4、器3.逆向分析逆向分析实例例4.断点断点5.专用工具用工具调试器和反汇编器逆向工程的研究对象:特定硬件平台上的可执行二进制代码逆向工程的研究手段:跟踪与调试两种关键工具:调试器和反汇编器调试器调试器(Debugger):加载被调试的目标程序(或进程),并对它进行动态跟踪和调试。与源码调试的区别:是对程序的二进制可执行代码直接进行调试。各种语言开发环境中自带的调试器功能有限,难以胜任逆向工程的需要。采用专门的调试器常用调试器-SoftICERing0级内核调试器;通过网络进行远程调试;支持单机的、源程序级的调试能力;支持WindowsNT/9x,功能强大;常用调试器-OllyDBGOllyDBG
5、(简称ODBG)工作在Ring3下,无需注册免费使用,最新版本是1.10。书中使用ODBG进行实例讲解。12341.反汇编窗口2.寄存器窗口3.堆栈窗口4.转存(dump)窗口常用调试器-WinDBGWinDBG是微软出品的调试器,可以用于源代码调试和系统内核调试,还能分析dump文件,和Windows结合紧密。WinDBG是基于命令使用的调试器。反汇编器反汇编的概念:把二进制代码翻译成汇编助记符。调试器中自带简单的反汇编引擎,但是这些反汇编引擎功能有限,专业反汇编器可以更好的分析代码。xor ebx,ebx0 x33,0 xDB汇编助记符二进制代码汇编反汇编反汇编器IDAProIDAPro(
6、InteractiveDisassemblyPro)功能强大,能反汇编多种硬件平台的指令集,配有众多的反汇编选项;能根据目标程序的编译器识别出很多函数和参数甚至结构体并且自动标注。支持改名,内建简单调试器以及支持很多高级功能。反汇编器W32DASMW32Dasm是一个轻量级的反汇编工具对小型文件进行反汇编时速度很快它的优点是使用方便容易上手,缺点是难以对大的文件进行反编译。目目 录1.逆向工程概述逆向工程概述2.调试器和反器和反汇编器器3.逆向分析逆向分析实例例4.断点断点5.专用工具用工具实例1直接内存查看Win32进程内存空间当进程开始后,各种数据和资源会以一定结构组织起来映射到主存。默认
7、情况下,Win32系统上每个用户进程可以占有2GB的私有地址空间,操作系统占有剩下的2GB地址空间。进程的代码和各种资源都会在进程内存空间里出现,可以用内存查看工具查看进程内存以获取一些信息例如字符串等。实例1cont.运行目标程序主窗口上有两个文本框,分别用于输入用户名和序列号这两个注册信息。在用户名文本框中输入用户名newbie,下面随便填入一个注册码11223344,点击check按钮,crackme弹出一个对话框提示输入的注册码错误。暂时关闭对话框。打开WinHEX,点击工具栏上的OpenRAM按钮,弹出对话框选择想要打开的进程内存。选中PrimaryMemory后点击OK打开的进程内
8、存空间。实例1cont.12crackme是特意选择给出的特例,程序通过用户名计算出注册码,然后直接用字符串比较函数明码比较输入的假注册码和真注册码是否一致,并且在比较后没有及时清除内存中暂时保存的真正的注册码。基于编程经验,真假注册码在内存中的位置相距不远,可以尝试搜索,并在周围寻找正确结果。”假注册码“内存中的按Ctrl+F打开文本搜索对话框,填入11223344并且选择ANSI编码在内存尽心查找定位。实例1cont.“11223344”在内存中一共出现了两次,在第二次的内存附近可以看到输入的用户名和假注册码,在假注册码的下面是一串数字,猜测是正确注册码。将这个字符串填进crackme的主
9、界面,点击check按钮显示注册成功。实例1cont.这个crackme是特意选择的例子,仅仅为了说明问题,并不具有普遍适用性。用查看内存的方法之所以能够起作用,根本原因还是程序中计算注册码后使用了明文字符串比较,并且没有及时清除内存中的敏感信息。实例1cont.实例2实例2的仍然使用实例1的利用调试器根据注册信息找到注册码计算的代码,并且通过跟踪计算过程逆向出注册码的计算过程。Crackme的注册流程:填入注册信息后计算出正确的注册码并与从用户界面上输入的注册码进行比较;结果正确则弹出对话框提示注册成功,反之提示失败。从编程角度来说,一般会在校验过后在用户界面上或者用弹出对话框的形式给用户是
10、否已经注册成功的提示,用于提示的代码应该距离注册码校验的地方不远可以通过观察程序的提示信息(或者其他注册成功的表现)来定位计算和校验注册码的关键代码。可以利用提示字符串作为切入点来完成逆向工程的任务。ODBG有一个强大的字符串引用查找插件UltraStringReference,可以在程序中搜索ASCII和Unicode编码的字符串。在反汇编窗口中点击右键,在选项菜单中可以看到有UltraStringReference的选项,选择第一项FindASCII。搜索完毕后ODBG会显示搜索结果,可以看到注册成功时显示的“correctwaytogo,yougotit.”。实例2实例2在该字符串上双击
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件逆向分析 软件 逆向 分析 PPT 课件
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内