IDA调试器
IDA支持调试器功能,弥补了静态分析能力的不足。
1.加载目标文件
在Debugger-select debugger中可以根据当前文件类型选择调试器类型,如图所示
选择win32 debugger,就可以打开本机模式调试目标软件了。也如同以前讲的,还有另外一种调试方式,就是附加到另外一个正在运行的进程上,能否用IDA调试器附加进程的方式,取决于目前IDA是否打开了可执行文件。
如果没有数据库被打开会出现另一种不同的形式,如图
可以打开Debugger-attach-local windows debugger打开附加进程窗口如图
IDA除了本地调试还可以进行远程调试。
2.调试器界面
左侧为反汇编窗口。右上方为通用寄存器窗口,右下方为栈窗口。
3.调试跟踪
跟踪所调试目标进程的行为是调试器的基本功能。debugger菜单提供了相应的调试命令,并且各有快捷键。
4.断点
这也使调试器的必备功能。步骤如下
IDA也支持条件断点。步骤如下
condition设置框的表达式就是条件。
5.跟踪
类似ODG的run trace功能。将调试程序执行过程中的事件记录下来。跟踪分为两类,一类是指令跟踪,一类是函数跟踪。
6.监视窗口
因为在调试中需要监视变量中值的变化。所以要用IDA的监视功能。监视的对象是数据,监视点一般设置在栈或者数据区块中。示例如下
双击asc_407068来到数据区块,执行add watch命令,设置一个监视点。
7.自动化调试
在调试器中之前的脚本和插件依然可以发挥作用。可以通过编写IDC脚本和插件来控制调试器,例如启动调试器,执行复杂的断点条件,采取措施破坏反调试的技巧。
基本的脚本函数可以设置,修改和枚举断点,读取和写入寄存器与内存的值。
使用脚本控制调试器的基本方法是启动一个调试器操作,等待相应的调试器事件代码。调试扩展函数列举如下。
远程调试
IDApro支持了TCPIP网络对于应用程序的远程调试,例如远程调试Windows,Linux,Android,MACOSX二进制文件。ida附带了用于实现远程调试会话的服务器组件
在远程调试之前,要在远程计算机上启动相应的测试服务器组件,他会处理所有底层执行和调试器操作
1.Windows平台
将Windows本机作为调试器客户端,在其上运行VMware虚拟机上的WindowsXP并将其作为调试器服务器,将被调试的目标文件reverseme复制到Windows本机中,同时将win32_remote复制到调试器服务端的Windowsxp中,执行。
在调试器客户端运行IDA主程序,执行远程调试命令,在打开的调试选项窗口设定服务器ip地址,端口等等。
设置完成就可以开始远程调试了、
2.Linux平台
将IDA安装目录下的linux和被调试的目标软件main上传到linux机器中,放在/home目录下。
因为目标文件是linux程序,所以要在Windows运行ida pro。