为了偷懒,开始使用上了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软件包
sudo apt update sudo apt install qemu-user-static sudo update-binfmts --install i386 /usr/bin/qemu-i386-static --magic 'x7fELFx01x01x01x03x00x00x00x00x00x00x00x00x03x00x03x00x01x00x00x00' --mask 'xffxffxffxffxffxffxffxfcxffxffxffxffxffxffxffxffxf8xffxffxffxffxffxffxff'2.启用i386架构和软件包
sudo dpkg --add-architecture i386 sudo apt update sudo apt install gcc:i3863.运行binfmt服务
sudo service binfmt-support start
这个命令每次重新打开wsl后都要输入一遍才行,尝试过设置开机自启,但是我的一直报错,不知道是不是我电脑的问题,其实我输入这个命令的时候,也会报错。可能是我的电脑的问题,后续解决只能慢慢寻找了
但是,至少可以运行32位程序了呢,不过gdb还是不能调试,任重而道远。
原文地址:https://blog.donstpast.cn/index.php/archives/85/



