网络上有很多安装教程,也看了《揭秘家用路由器 0day 漏洞挖掘技术》,但是由于版本等原因,与其他作者的安装还是略有不同,会遇到很多问题,以下参考我自己安装遇到的问题进行。
我的环境
ubuntu:16.04
内核:4
安装 binwalk
方法一
sudo apt-get install binwalk
方法二(推荐)
sudo git clone https://github.com/devttys0/binwalk.git
安装 jeb
在 https://www.pnfsoftware.com/jeb2/mips 下载试用版,但是不知道为啥我的下载速度很慢。
也可以使用吾爱破解
的破解版 https://down.52pojie.cn/Tools/Android_Tools/JEB_3.0.0.201808031948_Pro.zip ,亲测内部可以进行复制粘贴。
需要安装java环境,可以参考:https://blog.csdn.net/lyhkmm/article/details/79524712 进行安装。
安装 QEMU
有两种方法,一种是直接下载,另一种是通过官网下载包,然后再安装。经过H4lo师傅的踩坑,2.4.0版本
最好。
方法一:
sudo apt-get install qemu
我这样下载下来的是2.5.0版本
,我决定先用一段时间...
方法二:
https://download.qemu.org/ # 自选版本进行下载
./configure
sudo make -j8 # -jx x=内核*2
sudo make install
安装 sasquatch
sudo apt-get install build-essential liblzma-dev liblzo2-dev zlib1g-dev
git clone https://github.com/devttys0/sasquatch
cd sasquatch
./build.sh
使用sasquatch工具的时候,直接命令行输入 sasquatch加对应的参数就可以执行。
安装 MIPS 交叉编译环境 buildroot
这个我卸载安装了好几次..因为安装的版本编译会出错(我搜索没有找到较好的解决办法),使用会出现头文件找不到等等问题。推荐下面的版本
sudo apt-get install gcc build-essential bison flex gettext tcl sharutils libncurses-dev zlib1g-dev exuberant-ctags g++ texinfo patch vim libtool //升级一下系统的包
wget http://buildroot.uclibc.org/downloads/snapshots/buildroot-snapshot.tar.bz2
tar -jxvf buildroot-snapshot.tar.bz2
cd buildroot
make menuconfig
查看kernel版本进行选择:
uname -r
最后使用
make
进行编译
添加PATH
法一:将PATH添加到/etc/profile
末尾,再source /etc/profile
,网上很多都说有效...对我无效,只是暂时性的
法二:将PATH添加到~/.bashrc
末尾,再source
export PATH="/home/kk/tools/buildroot/output/host/bin:$PATH" # 填自己的编译器所在路径
测试交叉编译环境 demo.c
#include<stdio.h>
int main(){
puts("demo");
return 0;
}
kk@ubuntu:~/Desktop/iot$ mipsel-linux-gcc -static demo.c -o demo
kk@ubuntu:~/Desktop/iot$ ls
demo demo.c
kk@ubuntu:~/Desktop/iot$ file demo
demo: ELF 32-bit LSB executable, MIPS, MIPS32 version 1 (SYSV), statically linked, not stripped
LSB --> 小端序
MIPS 系统网络配置
下载mips虚拟机
https://people.debian.org/~aurel32/qemu/mips/ 自行选择大小端格式mips系统【mips大端机,mipsel小端机】
法一
sudo apt-get install uml-utilities bridge-utils # 安装依赖文件
sudo vim /etc/network/interfaces # 修改主机配置
写入
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp # dhcp方式获取IP地址
iface br0 inet dhcp
bridge_ports eth0
bridge_maxwait 0
创建qemu网络接口启动脚本
sudo vim /etc/qemu-ifup
将原来内容注释,并写入
#!/bin/sh
echo "Executing /etc/qemu-ifup"
echo "bridge networking"
echo "Bringing up $1 for bridge mode"
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0"
sudo /sbin/brctl addif br0 $1
sleep 2
更改qemu-ifup权限,重启使配置生效
sudo chmod 777 /etc/qemu-ifup
sudo /etc/init.d/networking restart
失败,在网上查询之后,找到了比较好的解决方法
网卡中并没有叫eth0的。
将上面两个文件中的eth0
改为ens33
,再次sudo /etc/init.d/networking restart
,成功。(但是我仍然不确定是否解决了本质问题...)
- 我认为也可以将网卡名更改为
eth0
,不过我没有用这种方式,可以参考:https://blog.csdn.net/openbox2008/article/details/80051259 我觉得有些麻烦
执行:
sudo qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" -net nic, -net tap -nographic
登录
- Hostname: debian-mips
- Root password: root
- User account: user
- User password: user
查看
eth0没有ip,手动设置ifconfig eth0 xxx.xx.xx.xx
,mips虚拟机的ip要和主虚拟机ip在同一网段
很麻烦...我这还遇见这么多错误...
法二(推荐)
第二种方法,是直接使用tunctl
命令来建立一个虚拟网卡,与模拟的 mips 虚拟机进行通信
sudo tunctl -t tap0 -u `whoami` # 为了与 QEMU 虚拟机通信,添加一个虚拟网卡
sudo ifconfig tap0 10.10.10.1/24 # 为添加的虚拟网卡配置 IP 地址
sudo qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" -net nic, -net tap -nographic # 开启mips虚拟机
在mips虚拟机中登录后执行
ifconfig eth0 10.10.10.2/24
可以互相ping通说明配置成功
法三
和方法二差不多,也可以参考这篇
https://wzt.ac.cn/2019/09/10/QEMU-networking/
最后如果在mips虚拟机中ifconfig没有分配ip,可以同方法一,与宿主机同一段分配一个ip即可,如:
ifconfig eth0 192.168.95.160
参考:
https://blog.csdn.net/QQ1084283172/article/details/68942660
https://xz.aliyun.com/t/3826#toc-2
https://xz.aliyun.com/t/6071#toc-2
https://blog.csdn.net/youyudehexie/article/details/7583657
https://xz.aliyun.com/t/462#toc-6
感谢BufSnake
知世
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法
最后于 2020-3-25 23:52
被plkk编辑
,原因: