最近收到几位论坛朋友发来的私信来询问如何使用IDA调试64位Windows启动过程。 使用IDA+VMware调试MBR和OS Bootloader的文章已经屡见不鲜了。但是很多朋友在使用IDA在调试64位Windows时,会发现在调试64位Windows的bootmgr时,当调试到bootmgr!Archx86TransferTo64BitApplicationAsm时,调试器失去响应,跟假死一样。断开调试器后,使用64位IDA连接也无响应。我查了一下相关的文档,整理出可以正常调试Windows x64的方法。 VMWare提供的GDB Stub分两个部分,一个用于支持x86,一个用于支持x64。 当VMWare的虚拟CPU运行于16/32位模式时,32位支持的GDB Stub生效,监听在8832端口。如果VMWare开启了调试支持,则VMWare启动后自动开启8832端口。 当VMWare的虚拟CPU运行于Long-Mode时,8864端口开始监听。 设置步骤 1.在对应虚拟机的.vmx文件中加入如下代码 debugStub.listen.guest32.remote = "TRUE" debugStub.listen.guest64.remote = "TRUE" monitor.debugOnStartGuest32 = "TRUE" debugStub.hideBreakpoints = "TRUE" bios.bootDelay = "3000" 2.打开32位IDA,启动VMWare,使用IDA连接到VMWare开始调试。 3.在bootmgr!Archx86TransferTo64BitApplicationAsm上下断点,找到从Protected Mode跳转到Long-Mode的那个长跳转,在跳转到的目标位置下一个断点。 4.F7单步步过jmp far指令后,IDA进入等待 此时启动IDA64,连接8864端口即可进行64位调试。 有了VMWare+IDA,就可以让难用的BOCHS去死了
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课