前言
有同事要用IDA7.0调试windows驱动,我帮做个实验。
主要是配置调试环境,环境搞好了,就靠IDA了:)
配置环境的过程细节比较细碎,记录一下。
实验
要调试驱动,要用windbg来进行双机调试,IDA调试驱动用的是windbg.
IDA官方给出了用IDA调试内核程序的pdf, 找到了2篇,虽然不是针对IDA7.0写的,但是一样管用。备份了一份在csdn(debugging_windbg.pdf,debugging_gdb_windows_vmware.pdf)
实验的主机是win10x64, 虚拟机是win7x64(vmware14).
*先装IDA7.0
*再装win10SDK(里面有windbgx86 and windbgx64)我是都装了,应该装windbg就行。 备份了一份在csdn(win10sdk.zip.001,win10sdk.zip.002).
* 配置虚拟机(网上很多同学都做了实验)
我参考的是这篇(http://blog.csdn.net/one_in_one/article/details/51766912),写的非常详细。
*验证windbg是否能调试驱动(或应用程序)
写个脚本,先启动虚拟机,再运行脚本。看看启动windbg后,是否能连上虚拟机中的win7x64. 如果可以了,就说明windbg调试环境没问题,就可以用IDA+windbg来调试了。
rem @file windbg_x64_debug_vmware.bat
"C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\windbg.exe" -b -k com:port=\\.\pipe\com_1,baud=115200,pipe
pause
- 1
- 2
- 3
- 4
IDA7.0+windbg调试选项的设置
每个子界面都有确定键,连续按确定键,返回主设置界面。
最后出现attach虚拟机中的0#进程的界面,按确定,就附加到内核了。
IDA刷新内核进程列表需要些时间,等刷新完,就看到内核列表,然后选感兴趣的驱动点击进去,在想下断点的反汇编实现处下F2断点。
总结
以前学驱动时,就知道用windbg做实验。
今天同事说起来,IDA一定有调试驱动的功能。
上网一查才知道,在vmware6.5的时候,IDA就有调试驱动的功能了。
如果要调试的不是自己的驱动,无源码的情况下。用IDA调试驱动的感觉一定比windbg要好吧?
备注
如果用windbg调试远端的r3程序,需要拷贝win64_remote64.exe到远端,先运行端口监听。
然后IDA7.0调试器选择远端的windbg, 填入ip和端口号(默认,不用改),就可以看到远端的r3进程列表,附加上去,就可以单步调试了。