主页 > 路由器 > 利用qemu建立AC9、K3的动态调试环境

利用qemu建立AC9、K3的动态调试环境

2017年3月28日 利用qemu建立AC9、K3的动态调试环境有1条评论 阅读: 3,141 次

参考:

https://wiki.openwrt.org/doc/howto/qemu

http://www.cnblogs.com/shangye/p/6196403.html

http://xdxd.love/2016/09/20/逆向路由器固件之动态调试/

http://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw==&mid=2458279448&idx=3&sn=1a4b02ddd342a609f528c7b47d758925&scene=2&srcid=0831gY8sVHg6HrLm4pJeunko&from=timeline&isappinstalled=0#wechat_redirect

 

1、安装binwalk
git clone https://github.com/devttys0/binwalk.git

cd binwalk
sudo python setup.py install
sudo apt-get install python-lzma

2、安装qemu
sudo apt-get install qemu qemu-system

sudo apt-get install binfmt-support qemu-user-static

3、解压ac9固件
binwalk -Me ac9.bin

4、运行固件中的程序
进入解压后的./squashfs-root目录,运行
cp $(which qemu-arm-static) ./
sudo chroot . ./qemu-arm-static ./bin/uname -a
sudo chroot . ./qemu-arm-static ./sbin/ifconfig
可以看到固件中uname、ifconfig程序的运行结果

5、运行固件

针对不同平台,openwrt有不同的linux内核

Mips为Malta平台的linux系统内核:

https://downloads.openwrt.org/snapshots/trunk/malta/generic/openwrt-malta-le-vmlinux-initramfs.elf

ARM为realview平台的linux系统内核:

https://downloads.openwrt.org/snapshots/trunk/realview/generic/openwrt-realview-vmlinux-initramfs.elf

由于AC9和K3都是ARM架构的,我们执行下面的命令可以启动openwrt:

sudo qemu-system-arm -kernel openwrt-realview-vmlinux-initramfs.elf -M realview-eb-mpcore -net nic,vlan=0,macaddr=12:22:22:22:22:22 -net tap -nographic

 

现在要把AC9的文件加入进去

1)使用dd创建一个文件
dd if=/dev/zero of=./share.img bs=1M count=35
2)格式化share.img文件
mkfs.ext4 ./share.img
3)然后执行
sudo mount -o loop ./share.img /tmp/share

将ac9的固件内容拷贝到/tmp/share即可

 

再执行如下命令启动qemu:

sudo qemu-system-arm -kernel openwrt-realview-vmlinux-initramfs.elf -M realview-eb-mpcore -net nic,vlan=0,macaddr=12:22:22:22:22:22 -net tap -nographic  -sd ./share.img

-kernel参数指定了内核文件

-M参数指定了需要qemu模拟的平台

-net参数指定了网卡的mac地址

-sd参数就是指定了我们的硬盘镜像文件

-nographic告诉qemu不用另起一个界面视窗,就用当前的控制台

通过如下命令挂载ac9的文件系统:

mount -t ext4 /dev/mmcblk0 /overlay/

然后用chroot /overlay /bin/sh来切换根目录到路由器文件系统。

 

为了能够让QEMU虚拟机和宿主机都上网,并且互通,为动态调试做准备,必须要配置桥接网络
sudo apt-get install bridge-utils uml-utilities

-修改/etc/network/interfaces内容

auto  lo
     iface lo inet loopback
     auto eth0
     iface eth0 inet manual
     up ifconfig eth0 0.0.0.0 up
     auto br0
     iface br0 inet dhcp
     bridge_ports eth0
     bridge_stp off
     bridge_maxwait 1

-修改/etc/qemu-ifup内容

    #!/bin/sh
     echo "Executing  /etc/qemu-ifup"
     echo "Bringing up $1  for bridged mode..."
     sudo /sbin/ifconfig $1  0.0.0.0 promisc up
     echo "Adding $1 to  br0..."
     sudo /sbin/brctl addif br0  $1
     sleep 3

评论:1

  1. cayxxx 回复
    2017年12月11日 于 下午9:27

    大神你好,我用binwalk解压了K3的MTD6分区出来,squashfs-root目录是空的,另外还有几个压缩文档打不开,怎么修改呢

发表评论

电子邮件地址不会被公开。 必填项已用*标注