拆炸弹实验-为VMware-虚拟机配置mips指令集环境
学习计算机系统的时候,我们逃离不了实验的折磨,尤其是拆炸弹实验,做这个实验的时候,我们往往需要在学校的实验平台上做,但是实验学时有限,很多同学可能做不完,所以我们为什么不在自己的虚拟机上配置mips指令集环境?这样的话我们就可以在自己的电脑上使用
linux版本是ubuntu虚拟机:(虚拟机图标如下,如果你需要安装虚拟机,请参考下面链接)
安装指南
镜像文件就按安装指南中的链接下载,VMware workstation 15就直接下载下面这个
https://pan.baidu.com/s/1DmQoMzj0XWLo-6zulAy_-A
提取码:mzx9
在这里呢,我主要分享一些配环境的步骤。记得把这文件(qemu)存到虚拟机中哦,下面指令会用到这些文件。
https://pan.baidu.com/s/1Wnz8TYcg5-yx5kExLO5Pmg
提取码:23er
(1)首先,一条提条执行如下指令:
sudo cp /etc/apt/sources.list /etc/apt/sources_backup.list;
sudo rm /etc/apt/sources.list
sudo cp sources.list /etc/apt;
sudo apt-get update
当你执行到第四条指令的时候,你会遇到问题,apt-get用不了的错误,这个时候你就要进行换源。点击查看方法,换源完毕后再重新执行sudo apt-get update,但是可能又会遇见错误,常见错误是缺少公钥,报错是英文的以Err开头,具体内容我忘记了,配置的时候也没有截图,大致是缺少公钥,并且会显示缺少的公钥,解决方法很简单你可以点击查看。
(2)安装库文件和qemu,将下列指令一条一条进行:
sudo apt-get install libc6
sudo apt-get install qemu-user
sudo apt-get install libc6-mipsel-cross
(3)连接库文件:
sudo mkdir /etc/qemu-binfmt
sudo ln -s /usr/mipsel-linux-gnu /etc/qemu-binfmt/mipsel
sudo cp -r mipsel-gdb /usr/local/
(4)运行如下两条qemu(我记得好像是执行任意一个都可以,你看着来吧):
qemu-mipsel PROGRAM_NAME PROGRAM_ARGU0 PROGRAM_ARGU1 ...
qemu-mipsel -L /usr/mipsel-linux-gnu PROGRAM_NAME PROGRAM_ARGS
注:- PROGRAM_NAME : 程序的路径以及名字,例如bomb。
- PROGRAM_ARGS : 要传递给程序的参数。
(5)运行gdb:
./mipsel-linux-gdb
如果报错缺少libncurses.so.6,那么就直接执行如下语句,进行安装,但是你要进行了上面所说的换源才可以安装成功。
sudo apt-get install libncurses6
如果最后出现了segment error ,那么可以执行如下指令:
set solib-search-path /usr/mipsel-linux-gnu/lib/
(6)接下来就可以使用了,执行如下:
cd qemu/mipsel-gdb/bin
上面这个操作表示你要进入这个文件目录里面
qemu-mipsel -g 2333 ./bmob
这个2333是一个连接端口,你也可以换成其他比如2222,你随意,并且注意的是:这里要运行的bomb文件是没有添加路径的,这是不正确的,你实际应用的时候要添加路径,你如果不知道路径,你可以打开虚拟机文件夹找到你存放的bomb然后把这个bomb拖到终端上,终端就会显示路径,不过记得把显示出来的单引号去掉哦。
执行上述后,然后当前终端会卡住(如下,卡住并且光标闪烁),不要担心,你继续往下看博客。
(7)再打开另一个终端,并且在这个终端中输入
./mipsel-linux-gdb /bomb
注意!!!bomb一定要加路径,比如你放bomb这个拆炸弹实验的文件在这里home/ubuntan/demo/bomb;
然后会显示:
然后,你在gdb后面一条条执行:
set arch mips
set endian little
target remote localhost:2333 这个端口要和原终端端口一致。
现在这个终端用于gdb,原终端就用来运行bomb以及输入拆炸弹内容了。
比如第一道关卡部分内容,在gdb终端窗口可查看其代码:
在另一个运行的窗口显示如下:
(马赛克部分是本人输入的学号。Let’s begin now!即是第一关的答案)
good luck~