基於arm的C++反彙編 qemu-arm環境搭建

xianjian_x發表於2016-05-20

  看雪高手寫了在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 虛擬機器可以完美的跑起來:
這裡寫圖片描述

碼字不容易,覺得好請打賞下:
這裡寫圖片描述

相關文章