导语:之所以要进行逆向破解,其原因之一就是通过逆向工程可以了解恶意软件的工作原理并有可能对其功能进行重新设计,比如中情局和国家安全局等机构定期会将恶意软件重新用于其他目的。

1.png

之所以要进行逆向破解,其原因之一就是通过逆向工程可以了解恶意软件的工作原理并有可能对其功能进行重新设计,比如中情局和国家安全局等机构定期会将恶意软件重新用于其他目的。

由于IDA Pro是目前最棒的一个静态反编译软件,是众多安全分析人士不可缺少的利器,所以我在以前专门介绍过IDA Pro的一些用法。但在本文中,我将介绍OllyDbg,它和DA Pro一样,目前也被安全分析人士广泛使用,且是免费的。

OllyDbg是一个新的动态追踪工具,是将IDA与SoftICE结合起来的产物,Ring 3级调试器,非常容易上手,另外由于OllyDbg是一个通用的32位汇编分析调试器且操作界面非常直观简单,己代替SoftICE成为当今最为流行的调试解密工具了。同时OllyDbg还支持插件扩展功能,是目前最强大的调试工具。

如果你正在使用Kali linux,则你的系统上则很可能已经预装了OllyDbg。OllyDbg可以在任何Windows或Linux环境中运行,要说明的是,实际上OllyDbg是在Linux的WINE中运行。如果你的系统上没有OllyDbg,你可以在这里下载http:或或www.ollydbg.de或download.htm。

步骤1:启动OllyDbg

要在Kali中启动OllyDbg,请点击Applications,然后进入Reverse Engineering,最后找到ollydbg,如下面所示。

1.png

这样,你就会打开一个如下所示的界面。请注意,OllyDbg的界面顶部具有下拉菜单系统。

2.png

步骤2:将文件加载到OllyDbg中

下一步是将.exe文件加载到Ollydbg中,你可以将文件直接拖放到Olly的工作区域中,或使用顶部的下拉菜单的“文件”菜单,然后选择“打开”。请注意,打开窗口必须是可执行文件。

3.png

当文件打开时,Ollydbg就将开始分析代码。不过此时,我会使用一个简单的.exe,它预装在名为LaunchU3.exe的闪存驱动器上,仅用于演示。显然,这不是恶意软件。在将来的教程中,我将同时使用恶意软件和非恶意软件进行调试和分析。

如下图所示,Olly将代码分析过程分成几个窗口来进行。在窗口中的左上角,我会发出虚拟地址的指令。然后在CPU registers窗口中(右上角窗口中),我会将数据驻留在内存中。最后在右下方窗口中,我会得到一个栈的窗口。另外请注意,在右下角(黄色突出显示的部分)表示目前目前我所处的栈的状态,比如下图,我就处于“暂停”状态。

4.png

步骤3:不同视图下的代码

我可以通过点击顶部菜单上的查看按钮来从不同视图获取我的代码:

5.png

从上图可以看到,打开进程日志的快捷键为"Alt+L",可执行文件的快捷键为"Alt+E",内存布局的快捷键为"Alt+M",窗口,控键及其断的快捷键为"Alt+B"。请注意,菜单栏上的蓝色字母也可以表示每一个功能的快捷操作。

如果我选择可执行模块"Alt+E"或蓝色字母"E",我都可以打开一个包含所有可执行文件的窗口,如下图所示。可执行模块窗口会将基本虚拟地址(base virtual address)显示在第一列,而内存中的二进制文件的虚拟大小会在第二列显示,入口点的虚拟地址会在第三列中显示,从第四列到第六列分别是模块名称,文件版本和进程中加载的每个模块的文件路径。如果文本显示为红色,则表示模块已被动态加载。

6.png

不过在可执行文件窗口中,我可以通过单击右键,然后找出相关窗口比如“查看名称”的窗口。

7.png

这样,我就可以看到程序中使用的所有函数和导入的函数。我也可以使用Ctrl+N访问此窗口。通过检查可执行文件的导入功能,我可以经常对恶意软件的功能进行分析。我建议大家可以查看Microsoft的MSDN API文档网站,这是一个很有用的资源,用于了解这些函数,参数以及返回函数的功能。

8.png

在“名称”窗口中,如果我单击右键,就可以通过单击或直接按F2来设置断点。

9.png

OllyDbg的内存映射窗口显示了进程中每个分配的内存区域的虚拟地址,虚拟大小,所有者模块,段名称,内存分配类型和内存保护。

10.png

OllyDbg的线程窗口会显示线程ID,入口点虚拟地址,线程环境块(TEB)虚拟地址,last-error值,例如活动或挂起的优先级状态以及进程中每个线程的时序信息。

11.png

Windows窗口会显示进程拥有的每个窗口的控键,标题,父窗口,窗口ID,窗口样式和窗口类信息。

12.png

“控键”窗口会显示对象类型,引用计数,访问标志以及进程拥有的每个控键的对象名称。

13.png

SEH(结构化异常处理程序)链接窗口会显示当前线程的结构化异常处理程序函数。

14.png

断点

任何一个好用的调试器,其必备的关键特点就是能够设置断点。断点使我能够以指定的地址或指令停止程序的执行。目前有两种主要类型的断点方式:软件断点和硬件断点。OllyDbg提供了一种通过使用"Alt+B"的断点窗口来查看和打开断点的方法。

15.png

OllyDbg常用快捷键

用户界面 

打开新程序                        F3
关闭程序                       Alt+F2
最大化或恢复活动窗口             F5
使OllyDbg最上面的窗口         Alt+F5
关闭OllyDbg                   Alt+X

Windows

打开断点窗口                 Alt+B
打开CPU窗口                  Alt+C
打开模块窗口                 Alt+E
打开日志窗口                 Alt+L
打开内存窗口                 Alt+M

编辑

编辑内存                     Ctrl+
组合                         Space
撤消更改                    Alt+BkSp

执行

进入                           F7
设置动画                    Ctrl+F7
单步执行                       F8
设置动画结束               Ctrl+F8
运行应用程序                   F9
传递异常处理程序并运行     Shift+F9
执行直到返回               Ctrl+F9
执行到用户代码             Alt+F9
跟踪开始                   Ctrl+F11
跟踪结束                   Ctrl+F12
暂停                         F12
暂停跟踪条件               Ctrl+T

断点

设置或取消设置断点           F2
设置或编辑条件断点        Shift+F2
设置或编辑条件日志断点    Shift+F4
临时禁用或恢复BP            Space

数据

分析可执行代码            Ctrl+A
扫描对象文件              Ctrl+O
显示符号名称              Ctrl+N
搜索
搜索二进制                Ctrl+B
搜索命令                  Ctrl+F
重复上一次搜索           Ctrl+L

你可以点击www.ollydbg.de,完整查看快捷方式列表。

源链接

Hacking more

...