在linux下编译并以qemu user模式运行mips架构的文件

在linux下编译并以qemu user模式运行mips架构的文件

打完国赛初赛,水一篇博客

前述

QEMU是一个处理器模拟软件,可以用来在PC中模拟ARM、MIPS等多种架构的软硬件运行环境。QEMU主要有两种模拟模式:

  • System Mode
    System模式中,它可以虚拟多种CPU架构的虚拟计算机系统,比如可以在x86 的 Ubuntu系统中虚拟出一个MIPS架构的Debian系统。
  • User Mode
    User模式中,它可以运行为其他处理器编写的应用程序,比如可以在X64 Ubuntu系统中直接运行 MIPS Linux的应用程序。

QEMU功能强大,安装起来也很简单。在Ubuntu版本,只需要一条命令就可以把QEMU(本次博客涉及的安装文件)安装好.QEMU 其他架构的软件包这里没有涉及就没安装。

安装qemu-user模式

sudo apt install qemu-user

编译与运行

安装编译器:

sudo apt-get update
sudo apt-get install binutils-mipsel-linux-gnu
sudo apt-get install binutils-mips-linux-gnu
sudo apt-get install gcc-mipsel-linux-gnu
sudo apt install gcc-mips-linux-gnu 

写一个pwn题:

#include<stdio.h>
#include<stdlib.h>

void backdoor(){
    system("/bin/sh");
}

int main(){
    char buf[100];
    puts("Hello! Please input what you want to input!");
    read(0, buf, 0x100);
    puts("Good Bye!");
    return 0;
}

编译出mips小端程序,注意采用静态链接,否则运行时会提醒缺少库文件,那时需要用-L参数指定运行库的位置,比较麻烦,这里采用静态链接相对简单

mipsel-linux-gnu-gcc -static test.c -o test-mips-little

在linux下编译并以qemu user模式运行mips架构的文件

编译出mips大端程序,同样采用静态链接:

mips-linux-gnu-gcc -static test.c -o test-mips-big

在linux下编译并以qemu user模式运行mips架构的文件

运行:

qemu-mips ./test-mips-big

在linux下编译并以qemu user模式运行mips架构的文件

qemu-mipsel ./test-mips-little

在linux下编译并以qemu user模式运行mips架构的文件

其实编译运行arm程序也类似

首先要安装 arm-gcc,在 ubuntu 里可以直接 apt 安装。

sudo apt install gcc-arm-linux-gnueabi

安装好后就可以交叉编译 arm 程序了,注意用静态链接。

arm-linux-gnueabi-gcc -static test.c -o test-arm

在linux下编译并以qemu user模式运行mips架构的文件

在linux下编译并以qemu user模式运行mips架构的文件

上一篇:[20210520]11g shared pool latch与library cache mutex的简单探究3.txt


下一篇:LINUX下安装Jenkins