环境/工具:IDAPRO+VMWARE(windows XP 32环境)。
步骤:
1.VMware的.vmx文件的配置。
这个就不说了,假定你已经会了。
例如:
debugStub.listen.guest32 = "TRUE"
debugStub.hideBreakpoints= "TRUE"
还如:
debugStub.listen.guest32.remote = "TRUE"
debugStub.listen.guest64.remote = "TRUE"
monitor.debugOnStartGuest32 = "TRUE"
debugStub.hideBreakpoints = "TRUE"
bios.bootDelay = "3000"
具体的可参观官网的:Debugging Windows kernel under VMWare using IDA's GDB debugger.PDF
其中就有如下经典的两行:
debugStub.listen.guest32 = "TRUE"
debugStub.hideBreakpoints= "TRUE"
2.开启IDA->debugger->attach->remote GDB debugger.
填写好,名字是loacalhost,端口是8832.
注意此时填写好之后不要点击OK。因为虚拟机还没有启动。
3.开启VMWARE->电源->打开电源时进入固件。
之所以这样做是因为好控制,否则时机很难掌握。
此时虚拟机停止在BIOS里运行。
4.点击第二步出现OK。
也就是IDA的那个OK按钮。
弹出个提示框,我没有看,是英文,继续点击OK。
之后又出现个选择框,选择ID为0的那个,然后点击OK。
此时有弹出个提示框,提示成功了,点击OK。
此时弹出了一个界面,此时最好要等待会,可能是在分析。
其实此时也不用等待,直接点击取消按钮,即进入了调试界面。
5.在调试界面的反汇编窗口的地址上右键,然后选择jump to address,在弹出的界面中输入:MEMORY:00007C00。
然后点击OK。此时定位到这个指令。
注意:此时因为还在BIOS里运行,MBR还没有运行,所以这里的内容是空的。
不过,在这里可以先设置断点。设置断点的做法就不说了。
设置完毕之后按F9,让她继续运行。
6.切换/进入IDA,也就是在IDA中点击那个绿色的三角箭头。
此时还在BIOS里运行,所以要继续运行。
我是点击F10,然后选择保存就运行了。
7.因为刚才设置的IDA断点,此时IDA段下来了。此时VMWARE出现绿色的三角箭头并停止运行。
此时IDA的MEMORY:00007C00处也有内容了。
但是此时是32位的汇编。
此时按下alt + s,然后选16-bit segment。
此时变成了数据,然后再右键选择代码就可以了。
此时变成了16位的汇编了。
从此开始你的系统之旅吧!
MBR->BPR->直至系统加载成功。
made by correy
made at 9:29 2015/6/3.
没有评论:
发表评论