基于arm的C++反汇编 qemu-arm环境搭建

来源:互联网 发布:华为手机记录运动数据 编辑:程序博客网 时间:2024/06/05 02:29

  看雪高手写了在windows 上基于x86架构的 C++ 反汇编分析,但是没有人弄过在linux下基于arm架构的C++反汇编教程,这里尝试分析下,可以看到不管在win下还是linux下,不管基于x86还是基于arm 都遵循同样的C++标准,内存布局都是一样的。

说下运行环境:
主机Win10-64bit
主机上有一个vmware workstation 12.1
vmware 里 安装一个32bit ubuntu14.04 环境

  然后在这个ubuntu14.04 上搭建环境 为了方便这里不再从头编译而是使用网络上现成的二进制工具,参考Architectures/ARM/HowToQemu

1)下载arm-linux交叉编译工具,并且配置环境 arm-none-linux-gnueabi-gcc下载
2)下载 arm-linux 内核镜像 zImage-qemu-versatile-3.0.8-4.fc17.armv5tel
3)安装qemu-arm,这里不再编译,直接使用命令

sudo apt-get install qemu-system-arm

安装完毕即可。
4)制作根文件镜像,本来上面ARM/HowToQemu 给出了文件系统下载地址,可是即便打开SS翻墙也无法下载,无奈只得自己重新制作一个。
安装 ncurses

sudo apt-get install libncurses5-dev libncursesw5-dev

下载最新的busybox,make menuconfig 配置

Busybox Settings  --->        Build Options  --->            Cross Compiler prefix

按回车填入如下内容:

/opt/toolchain/arm/arm-2014.05/bin/arm-linux-

配置静态编译 busybox

Busybox Settings  --->        Build Options  --->            Build BusyBox as a static binary (no shared libs)

  然后make && make install 就可以在当前目录中会生成“_install”目录。
  剩下的工作就和以前博文 linux内核调试环境搭建-2 用busybox搭建 一样,如果觉得制作麻烦,我在dropbox上给出了制作好了的文件系统压缩包,下载下来之后解压到 busybox.img 里面即可。

至此,qemu-arm,zImage-arm,busybox-arm都已经得到。

按照 上面博文链接 中给出的方法创建主机设备,让主机和虚拟机能通信。

脚本启动

$ qemu-system-arm -M versatilepb -kernel zImage-qemu-versatile-3.0.8-4.fc17.armv5tel -hdc busybox.img -append root="0800" -k en-us -net nic -net tap,ifname=tap0,script=no

至此一个基于 qemu 的 arm-linux 虚拟机可以完美的跑起来:
这里写图片描述

0 0
原创粉丝点击