六、QEMU+MIPS环境搭建(下)

QEMU System模式的使用

上一次我们分享的是QEMU User模式的使用方法,使用User模式的QEMU,确实可以满足大多数的模拟运行场景,但它也确实存在很多硬伤。

比如QEMU的User模式并不能完整的模拟mips-linux的内核环境,导致一些应用程序需要严重依赖比如/proc目录下或/sys目录下的内存文件,而这些文件一般都是Linux内核在启动时产生的,甚至有些文件只有在真正的mips-linux操作系统中才存在,或者只有在真正的mips-linux系统中的这些文件才真正有参考意义。

又比如在路由器固件逆向分析过程中,特别是在ShellCode开发时,你可能写了一段汇编代码,编译后你发现它不能正常工作,那你就需要进行调试,而在Ubuntu虚拟机中目前又不存在能直接使用的mips-linux调试器,所以这样的调试环境搭建工作也会花费你很大精力。

所以,最好的办法就是使用QEMU的System模式运行一个mips架构的Debian系统,然后在这个mips架构的Debian系统中开发ShellCode并进行调试。

同样的,书中使用的mips-debian系统也很老旧了,导致系统启动后在线安装一些编译器、调试器之类的软件都不行。后来,我在网上搜到了一篇关于如何使用qemu启动debian 9系统的文章(https://markuta.com/how-to-build-a-mips-qemu-image-on-debian/),这里我也进行了总结:

mips-debian 9的系统目前只支持在线安装,首先应该去debian的ftp站点上(http://ftp.debian.org/debian/dists/stable/main/installer-mips/current/images/malta/netboot/)下载启动盘:

$ wget http://ftp.debian.org/debian/dists/stable/main/installer-mips/current/images/malta/netboot/initrd.gz
$ wget http://ftp.debian.org/debian/dists/stable/main/installer-mips/current/images/malta/netboot/vmlinux-4.9.0-9-4kc-malta

如果出现404错误,可以网页打开文件所在目录,查看正确vmlinux来下载:
http://ftp.debian.org/debian/dists/stable/main/installer-mips/current/images/malta/netboot/
然后使用命令为mips-debian创建一个2G大小的模拟磁盘文件:

$ qemu-img create -f qcow2 hda.img 2G

然后就可以执行mips-debian系统的安装了:

$ qemu-system-mips -M malta \
  -m 512 -hda hda.img \
  -kernel vmlinux-4.9.0-9-4kc-malta \
  -initrd initrd.gz \
  -append "console=ttyS0 nokaslr" \
  -nographic

安装过程中会提示语言选择:
在这里插入图片描述
地理位置选择:
在这里插入图片描述
主机名配置:
在这里插入图片描述
域名配置:
在这里插入图片描述
软件镜像源所在位置:

在这里插入图片描述
在这里插入图片描述
网络代理设置:
在这里插入图片描述
这些配置一般选择默认值即可,如果默认值是空的,那就保持它为空。
稍后还会提示你设置root用户的密码:
在这里插入图片描述
然后设置普通用户的用户名:
在这里插入图片描述
普通用户的密码:
在这里插入图片描述
时区选择:
在这里插入图片描述
磁盘分区:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后进行分区配置的确认:
在这里插入图片描述
在这里插入图片描述
确认无误后,选择“Yes”选项,就真正开始了系统安装过程:
在这里插入图片描述

经过大概1个小时左右(当然,这取决于你为qemu指定了多大的内存和你所在的网络情况),会提示安装一些方便开发用的工具,其中最重要的是SSH server:
在这里插入图片描述
最终,整个系统安装完成:
在这里插入图片描述
但,似乎并没有这么顺利,因为这里提示说找不到boot分区,所以,可能无法启动系统。没关系,先选择“Continue”继续:
在这里插入图片描述
此处需要选择“Go Back”选项,并在页面中选择“Execute Shell”选项,然后在给出的shell中输入“poweroff命令”。

因为在刚刚系统安装过程的末尾给出提示指出,mips-debian系统还需要boot分区才能够正常引导,所以下一步我们需要从hda.img磁盘镜像文件中提取boot分区镜像:

1、挂载hda.img磁盘镜像文件:

sudo modprobe nbd max_part=63
sudo qemu-nbd -c /dev/nbd0 hda.img
sudo mount /dev/nbd0p1 /mnt

2、从挂载目录中拷贝boot分区中的重要文件:

cp -r /mnt/boot/initrd.img-4.9.0-9-4kc-malta .
cp -r /mnt/boot .

3、卸载工作

sudo umount /mnt
sudo qemu-nbd -d /dev/nbd0

MIPS-Debian系统网络配置

sudo apt-get install uml-utilities bridge-utils

修改/etc/network/interfaces:

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

auto ens33
iface ens33 inet dhcp
#auto br0
iface br0 inet dhcp
    bridge_ports ens33
    bridge_maxwait 0

修改/etc/qemu-ifup:

sudo /sbin/ifconfig $1 0.0.0.0 promisc up
sudo /sbin/brctl addif br0 $1
sleep 2

启动br0网卡:

$ sudo chmod a+x /etc/qemu-ifup
$ sudo /etc/init.d/networking restart
$ sudo ifdown ens33
$ sudo ifup br0

启动虚拟机:

$ sudo qemu-system-mips -M malta -m 512 -hda hda.img -kernel vmlinux-4.9.0-9-4kc-malta -initrd initrd.img-4.9.0-9-4kc-malta  -append "root=/dev/sda1 console=ttyS0 nokaslr" -net nic,macaddr=00:16:3e:00:00:02 -net tap -nographic

使用上面的步骤启动mips-debian系统后,mips-debian系统就能够共享Ubuntu虚拟机的网络连接了:
在这里插入图片描述
在MIPS-Debian系统安装完成以后,我们就可以在上面安装gcc、gdb、gdbserver等一些常用的开发和调试工具了,然后我们就可以在上面方便的开发和调试ShellCode了。

这一小节我们主要讲解了在什么情况下需要用到QEMU的System模式,并给出了MIPS-Debian系统的环境搭建步骤。

最后,希望本节的内容能够为你带来帮助。

下次我们将分享如何使用IDA对MIPS-Linux程序进行静态分析和动态调试的内容。

谢谢大家。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
QEMU 1.2.0 编译好的可执行程序,可以直接运行于windows平台,可以模拟各种硬件平台,例如ARM,X86,Sparc,PPC,MIPS等等。下面是文件列表 2012-09-20 00:18 3,211 bamboo.dtb 2012-09-20 00:18 131,072 bios.bin 2012-09-20 00:18 4,335 cpus-x86_64.conf 2012-09-20 00:18 keymaps 2012-09-20 00:18 9,216 kvmvapic.bin 2012-09-20 00:18 1,024 linuxboot.bin 2012-09-20 00:18 1,024 multiboot.bin 2012-09-20 00:18 729,908 openbios-ppc 2012-09-20 00:18 381,764 openbios-sparc32 2012-09-20 00:18 1,598,648 openbios-sparc64 2012-09-20 00:18 185,703 palcode-clipper 2012-09-20 00:18 9,982 petalogix-ml605.dtb 2012-09-20 00:18 8,259 petalogix-s3adsp1800.dtb 2012-09-20 00:18 524,288 ppc_rom.bin 2012-09-20 00:18 67,072 pxe-e1000.rom 2012-09-20 00:18 61,440 pxe-eepro100.rom 2012-09-20 00:18 61,440 pxe-ne2k_pci.rom 2012-09-20 00:18 61,440 pxe-pcnet.rom 2012-09-20 00:18 61,440 pxe-rtl8139.rom 2012-09-20 00:18 60,416 pxe-virtio.rom 2012-09-20 00:18 281,956 qemu-doc.html 2012-09-20 00:18 630 qemu-icon.bmp 2012-09-20 00:18 1,565,705 qemu-img.exe 2012-09-20 00:18 1,589,020 qemu-io.exe 2012-09-20 00:18 2,292,224 qemu-system-alpha.exe 2012-09-20 00:18 3,225,088 qemu-system-arm.exe 2012-09-20 00:18 1,677,312 qemu-system-cris.exe 2012-09-20 00:18 3,100,160 qemu-system-i386.exe 2012-09-20 00:19 1,628,160 qemu-system-lm32.exe 2012-09-20 00:19 2,105,344 qemu-system-m68k.exe 2012-09-20 00:19 1,631,744 qemu-system-microblaze.exe 2012-09-20 00:19 1,631,232 qemu-system-microblazeel.exe 2012-09-20 00:19 3,080,192 qemu-system-mips.exe 2012-09-20 00:19 3,257,344 qemu-system-mips64.exe 2012-09-20 00:19 3,269,120 qemu-system-mips64el.exe 2012-09-20 00:19 3,078,656 qemu-system-mipsel.exe 2012-09-20 00:19 1,601,536 qemu-system-or32.exe 2012-09-20 00:19 3,416,576 qemu-system-ppc.exe 2012-09-20 00:19 3,948,032 qemu-system-ppc64.exe 2012-09-20 00:19 3,411,456 qemu-system-ppcemb.exe 2012-09-20 00:19 1,839,104 qemu-system-s390x.exe 2012-09-20 00:19 2,116,608 qemu-system-sh4.exe 2012-09-20 00:19 2,118,144 qemu-system-sh4eb.exe 2012-09-20 00:19 1,843,712 qemu-system-sparc.exe 2012-09-20 00:19 2,611,200 qemu-system-sparc64.exe 2012-09-20 00:19 1,591,296 qemu-system-unicore32.exe 2012-09-20 00:18 3,273,728 qemu-system-x86_64.exe 2012-09-20 00:19 1,644,544 qemu-system-xtensa.exe 2012-09-20 00:19 1,637,376 qemu-system-xtensaeb.exe 2012-09-20 00:18 28,474 qemu-tech.html 2012-09-20 00:18 49,841 qmp-commands.txt 2012-09-20 00:18 3,304 s390-zipl.rom 2012-09-20 00:21 303,616 SDL.dll 2012-09-20 00:18 4,096 sgabios.bin 2012-09-20 00:18 878,640 slof.bin 2012-09-20 00:18 20 spapr-rtas.bin 2012-09-20 00:18 0 target-x86_64.conf 2012-09-20 00:18 35,840 vgabios-cirrus.bin 2012-09-20 00:18 40,448 vgabios-qxl.bin 2012-09-20 00:18 40,448 vgabios-stdvga.bin 2012-09-20 00:18 40,448 vgabios-vmware.bin 2012-09-20 00:18 40,448 vgabios.bin

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后知晚觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值