一、说明
IDA都很熟悉,强大的逆向工具。
Bochs是一个x86硬件平台的开源模拟器。它可以模拟各种硬件的配置。Bochs模拟的是整个PC平台,包括I/O设备、内存和BIOS。更为有趣的是,甚至可以不使用PC硬件来运行Bochs。对于调试操作系统是灰常强大的。说白了就是一个虚拟机。
二、IDA调试MBR
IDA调试MBR比较简单,先配置下虚拟机的VMX文件,添加一下代码:
[AppleScript] 纯文本查看 复制代码
1 2 3 |
|
打开IDA--Debugger--Attach--Remote GDB debugger
Hostname为localhost,port为8832
启动虚拟机后点击上面窗口OK按钮,弹出选择附加进程,选择第一个,点OK
在MBR载入内存的地方下断,也就是断在0x7c00
F9运行起来,停在下面
这个时候最好Alt+s下,选择16位的模式,因为这个时候还未进入32位模式
这个时候就可以随意的调试了,或许要比静态看清晰点吧。
三、Bochs调试MBR
Bochs是强大开源调试操作系统的模拟器,可以去http://bochs.sourceforge.net下载源码和软件。
首先新建一个硬盘(我安装的是2.6版本),开始--Bochs 2.6--Disk Image Creation Tool,一路默认回车就可以在当前目录创建一个虚拟硬盘,我这里是c.img
新建文件夹winxp,创建配置文件,我这里命名为WinXP.bxrc,将c.img复制进来
[AppleScript] 纯文本查看 复制代码
1 2 3 4 5 6 7 |
|
创建一个debugmbr.bat的批处理文件,用于启动调试模式
[AppleScript] 纯文本查看 复制代码
1 |
|
直接将XP的MBR复制进c.img的前512字节。启动debugmbr.bat后停在下图,下断于0x7c00(b 0x7c00),使用c命令继续运行到断点
调用u /10显示10行反汇编
调用r显示寄存器状态
如果想要单步走就使用s命令(相当于OD的F7),可以使用n单步(相当于OD的F8)
--------------------------------我是分割线---------------------------------------------------------
四、自己写代码修改MBR
这里主要的工作是将原始MBR备份到第二扇区,第一扇区写入自己的代码,执行完自己的代码后再调用原始MBR,自己的代码就实现一个显示I Love 52Pojie吧。代码如下,每句详细注释。
[AppleScript] 纯文本查看 复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
|
五、编译
利用nasm编译程序,然后利用Winhex导出2进制,这里可以直接手工调用将MBR复制到第二扇区,然后将我们的代码复制进第一扇区,我这里写一个程序实现。
六、代码实现MBR感染
核心感染代码
[AppleScript] 纯文本查看 复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
|
.h文件
[AppleScript] 纯文本查看 复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
|
七、感染后的效果图
回车后可以进入系统。
每次看见wowocock大牛的的文章都只能仰望,希望可以努力向您靠近,继续努力吧。