需要环境
- python2.7
- IDA 7.0
- Bochs2.6.9
- nasm.exe(可选)
调试步骤
第一步,创建Img文件
首先需要安装Bochs模拟器,打开安装目录,运行bximage.exe
,选择1,然后一路回车,直到出现Press any key to continue
安装目录下会出现一个c.img
硬盘镜像文件
第二步,将MBR文件,写入IMG文件
我这里先使用nasm.exe把一个用汇编写的mbr程序编译成bin
文件,如果是有样本的情况下,直接取出感染的mbr
部分保存成文件即可
使用python
脚本,把编译好的mbr
,写入img
文件中
def UpdateImage(imgfile, mbrfile):
"""
Write the MBR code into the disk image
"""
# open image file
f = open(imgfile, "r+b")
if not f:
print "Could not open image file!"
return False
# open MBR file
f2 = open(mbrfile, "rb")
if not f2:
print "Could not open mbr file!"
return False
# read whole MBR file
mbr = f2.read()
f2.close()
# update image file
f.write(mbr)
f.close()
return True
下图提示,已经写入成功
第三步,编写bochsrc配置文件
在bochs安装目录,创建一个模拟器的配置文件bochsrc
romimage: file=$BXSHARE/BIOS-bochs-latest
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
megs: 16
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path="c.img", mode=flat, cylinders=20, heads=16, spt=63
boot: disk
然后测试能否正常加载刚刚写进c.img
的mbr
启动模拟器命令:
bochs.exe -q -f bochsrc
第四步,使用IDA动态调试MBR
把刚才编写的bochsrc
文件,使用IDA
打开
在MBR程序入口下断点,然后点绿色按钮
启动调试
调试启动后,会自动打开mbr模拟器,现在就可以调试mbr了~