为了偷懒,开始使用上了WSL,不得不说这是个很方便的东西,但是,WSL不具备linux的全部功能,这次遇到的一个对我影响比较大的,应该就是它无法运行32位程序。因为做pwn题需要不断调试程序已经本地运行程序,但是当我在本机运行32位elf文件时,却发生了报错
这就很惨了,然后我查了许多东西,后来确定了一件事,微软的WSL不支持运行32位程序,尽管升级到WSL2可能会有部分解决,但是升级到wsl2会遇到和vmware冲突的问题,两者相比,vmware肯定要留的,所以,乖乖的退回了wsl,继续想办法解决无法运行32为程序的问题。
后来偶然间看淡qemu的应用。看到了曙光
我们可以借助qemu,来构造一个i386的虚拟环境
说干就干首先安装qemu-user-static软件包,添加i386 binfmt,启用i386体系结构,更新软件包列表,并安装一些i386软件包
1.安装qemu和binfmt
sudo apt update
sudo apt install qemu-user-static
sudo update-binfmts --install i386 /usr/bin/qemu-i386-static --magic '\x7fELF\x01\x01\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x01\x00\x00\x00' --mask '\xff\xff\xff\xff\xff\xff\xff\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xf8\xff\xff\xff\xff\xff\xff\xff'
2.启用i386架构和软件包
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install gcc:i386
3.运行binfmt服务
sudo service binfmt-support start
这个命令每次重新打开wsl后都要输入一遍才行,尝试过设置开机自启,但是我的一直报错,不知道是不是我电脑的问题,其实我输入这个命令的时候,也会报错。可能是我的电脑的问题,后续解决只能慢慢寻找了
但是,至少可以运行32位程序了呢,不过gdb还是不能调试,任重而道远。