ARM64調試環境


    自從上一次ZCTF做了一道ARM64的逆向題目后,我決定記錄下利用qemu搭建ARM64的環境的過程,以后肯定會遇到更多ARM平台下的Reverse和PWN。

一 安裝QEMU

    我要模擬的是64位的ARM環境,所以需要使用的是qemu-system-aarch64。在kali下,使用apt-get install qemu-system-aarch64就可以安裝成功。

二 可以直接使用的QEMU鏡像

    Ubuntu為用戶已經提供了已經安裝好系統的文件系統鏡像。在

https://cloud-images.ubuntu.com/ 里可以找到各個ubuntu server版本的QEMU鏡像,我在這里使用了Ubuntu Server 14.04。后綴是disk1.img就是qemu支持的鏡像。

三 對下載的鏡像進行擴容

    默認情況下,這個文件系統鏡像能使用的大小為2G。

 

    我就對這個文件系統進行擴容。

qemu-img resize trusty-server-cloudimg-arm64-disk1.img 20G 將鏡像的容量擴展為20G

modprobe nbd max_part=8

qemu-nbd -c /dev/nbd0 trusty-server-cloudimg-arm64-disk1.img 使用qemu-nbd掛載該鏡像

fdisk /dev/nbd0 對其進行分區調整

 

    刪除/dev/nbd0p1分區

 

    重建/dev/nbd0p1分區

    使其可引導

 

    使文件系統適應擴展后的鏡像。

四 提取vmlinuz和intrid.img

mkdir mnt

mount /dev/nbd0p1 mnt

ls -lt mnt/

cp mnt/boot/vmlinuz-3.19.0-25-generic .

cp mnt/boot/initrd.img-3.19.0-25-generic .

umount mnt

qemu-nbd -d /dev/nbd0

五 萬事俱備 啟動系統

    Qemu的網絡可以有多種方式,我對兩種常用的方式進行介紹。

    為了QEMU的Guest系統使用網絡,QEMU需要為Guest准備虛擬的網絡設備(比如網卡),還要為每一個虛擬的網絡設備准備一個backend,backend負責與虛擬的網絡設備進行交互,比如將Guest系統產生的網絡流量從虛擬的網絡設備中取出放入Host系統的網絡中。每一個backend要和一個虛擬的網絡設備進行關聯。在系統的啟動時,需要指定下面兩行參數。

-netdev TYPE,id=NAME,...

-device TYPE,netdev=NAME

    第一種使用網絡的方式類似於Nat的方式,Guest系統可以進行網絡訪問,但是Host系統不能直接訪問Guest系統。可以使用如下的命令啟動:

  第二種方式就是橋接的方式,Guest和Host能相互方便訪問,需要Host的root權限。在運行qemu-system-aarch64前需要生成網橋,可使用下面的腳本:

    腳本運行之后,運行ifconfig看下

 

    然后使用下面的腳本來啟動qemu-system-aarch64

    啟動后,安裝GCC/GDB,開始調試吧!!!

 

    在退出qemu后,運行下面腳本來恢復原有的網絡設置

六 其他

    我一般會在screen會話里運行qemu,然而退出qemu的快捷鍵是:Ctrl + a + x。但是這個快捷鍵的按下會被screen給捕捉到,所以不會到達qemu,那么qemu就不會退出。可以使用下面的命令來退出qemu。其中,arm64是screen的會話名稱。

screen -S arm64 -p 0 -X stuff "^ax"

七 參考文獻

http://rzycki.blogspot.com/2014/08/using-qemu-to-run-ubuntu-arm-64-bit.html

https://en.wikibooks.org/wiki/QEMU/Networking

http://www.mztn.org/dragon/arm64_01.html

http://www.cnblogs.com/clpszpp/p/linux_bridge.html

 

https://gist.github.com/larsks/3933980

http://hzqtc.github.io/2012/02/kvm-network-bridging.html

http://suihkulokki.blogspot.my/2014/08/testing-qemu-21-arm64-support.html

https://gist.github.com/philipz/3d278f414f8eadb5afe1

https://en.wikibooks.org/wiki/QEMU/Images

http://askubuntu.com/questions/456491/what-are-the-different-ubuntu-cloud-guest-images-disk1-root-uefi1

https://wiki.ubuntu.com/ARM64/QEMU

http://blog.eciton.net/uefi/qemu-arm-uefi.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM