相信很多的读者在进行反汇编、破解等逆向工程的实收使用的利器都是OD,在这里笔者再为大家推荐一款新的工具SyserWin32Debugger。这款工具与OD有着异曲同工之妙,虽然有的地方可能跟不上OD灵活,但也有的地方比较不错,例如源代码跟踪。今天危险漫步就为大家介绍这一款来自国外的SyserWin32Debugger。
首先进入SyserWin32Debugger的主界面,仍然是传统的黑背,从左向右,从上至下分别是寄存器窗口、内存数据窗口、堆栈窗口、反汇编窗口右下角一个是命令窗口。本文笔者用记事本这个程序为大家演示这款工具的使用方法以及应该注意的问题。本程序支持拖曳,所以只要将要分析的程序拖放到工具上即可。
软件是英文版的,这里为大家把菜单栏说明一下,帮助那些英文不好的朋友。“Debug”菜单。“reset”选项用于将程序重置,相当于将该程序重新载入。“continue”继续,相当于OD中的F9,运行程序,其快捷键为F5。“Return”从代码中返回.相当于从一个函数中执行出来。例如我们在一个call处跟进去再按F8跟进函数。
我们从堆栈窗口可以看出“GetModuleHandle”这个函数应该返回到01007384的地址位置。
我们按F6来到代码位置,是一个ret返回指令,然后F8单步走一步,返回位置。“Step”单步执行,但不跨越函数,快捷键为F8,与我们在OD中使用的F8类似。但OD中的F8会直接将call执行完毕,这里的F8则会直接跟到函数里面去,是真正的“单步执行”。“Proceed”这个与OD中的f8功能相同,是单步执行,而且跨越函数。“StepBranch”单步执行分支,就是执行我们程序中的switch{case)语句。以下的四个命令分别是设置断点(快捷键ctrl+f9)、激活所有断点、取消所有断点、删除所有断点。
然后我们来看一下程序的“Monitor”菜单命令。“Register Virew”命令用于显示当前的寄存器状况。“Data View"为数据窗口指令,用乇显示指定地址的内存数据,我们以0007FF34地址为实例。“CallStack”调用堆栈,该窗口用于显示从堆栈位置执行的call指令。“Run Trace List“指令执行跟踪列表,该窗口显示了当前已经执行完毕的代码,以及每条指令执行后的寄存器状态。
“Comment List”该窗口用于显示对代码的注释状况。后面的几个菜单用的比较少了,这里就留给读者自己去研究吧,下面我们来介绍一下右键的菜单。首先我们来看一下寄存器窗口的右键菜单有那些命令。我们选中寄存器EBP 0007FFCO点击右键选择“Show Code”,此时我们会看到反汇编窗口已经发生了变化,显示出了0007FFCO地址处的指令。我们继续在位置点击右键选择“Show Data”,此时数据窗口发生了变化。堆栈窗口的右键菜单命令,其功能属性与OD中几乎相同,相信大家可以明白怎么使用。反汇编主窗口的右键菜单命令功能分别是插入删除断点、激活/禁用断点、设置书签、保存位置、执行到此处等,希望读者自己摸索使用。
下面为大家介绍一下命令行指令,SyserWin32Debugger当前版本共支持91条命令行指令,这里主要大家列举一些常用到的指令,更多的指令请大家使用help进行查看。指令“.”,这个可以算是最简单的指令了,它的作用是定位当前EIP所指向的指令代码。“g addr”(addr代表地址)该指令的含义是执行到addr所指的指令位置。"d addr”该指令的含义在数据窗口显示当前地址的数据。“bpx addr”该指令的含义是在指定的代码地址设置内存断点。“bdaddr”该指令的含义是使指定地址的断点无效“beaddr”使指定地址的断点生效。“bc addr”删除指定位置的断点。其他的警令请读者自行查看,~用help命令即可。