2015年6月24日星期三

IDA-PRO调试MBR

环境/工具: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.