前言
软件逆向破解分为动态调试和静态分析,就如同内功与外功,以后我都会讲,这里先讲动态调试。
常用的动态调试工具有ollydbg和xdbg32/64
ollydbg不支持调试64位程序,虽经典但年代较久远,而xdbg是开源且免费的,并支持调试64位程序,我也相信这个工具会越来越好用的,本文讲的也正是xdbg!
俗话说,工欲善其事必先利其器,连用都不会用谈其他的都是枉然!
常用配置项修改
1、关闭事件断点:选项-选项
把这些事件断点都设置为空,防止调试时产生干扰:
2、忽略异常(有时候调试自己的软件崩溃问题时,需要勾选暂停于第一次机会,这样才能找出异常所在,不然会直接忽略并跳过,当然如果是逆向则勾选不暂停)
3、反汇编窗口配置
常用子窗口
以下我用xdbg32随便加载了一个Win32的程序
1、CPU窗口:
这里显示的是汇编代码,包括系统DLL中的代码、用户代码都在这里显示,断点也是在这里下的,F2即可,较为简单,就不多说了。判断目前代码处于哪个模块的方法,左上角标题栏会显示:
2、断点窗口:
列举了所有断点,这里可以进行一些删除、禁用操作,重要但很简单,不多讲。
3、内存布局
这个窗口非常重要,在该窗口下是可以下内存断点的
页面信息是模块的描述,内存断点分为四种(访问、读取、写入、执行),可以下一次性断点和重复断点。
这里举例,我们可以对exe里面的代码下执行断点,也就是一旦执行到exe中的代码就会被中断
我们也可以对exe加载的DLL下断点,一旦执行DLL中的代码就会被中断
这点在调试中非常重要,一定要掌握。
4、调用堆栈窗口:
这里显示的是堆栈信息
5、符号窗口:
这个窗口很重要,记住一定要下载相关的系统符号文件,这会使xdbg64在汇编中显示调用的系统API函数名,这点分析程序功能时很重要,下载方法:
6、句柄窗口:
点进去应该是空的,应该F9运行程序,然后右键刷新
这时候看到有个句柄类名为Button,这里可以下消息断点,比如点击按钮的时候就产生中断:
其他的后面再补充,有问题可以留言,看到了一定会回复的