2014-04-19 36 views
2

我有一個混淆的aarch64(64位ARM,又名armv8)二進制文件,我試圖理解。該程序解碼/解密來自其數據部分的機器指令,將它們存儲到內存中,然後跳轉到該地址。如何在aarch64彙編列表中輕鬆導航

我能夠使用以下gdb命令檢索機器入口。如上所述,使用objdump無法獲得這些入侵,因爲它們被編碼/加密,並且二進制在運行時對它們進行解密。

set log on 
x/2000i 0x****** 
set log off 

這產生gdb.txt文件中的工作目錄含有aarch64組件lisiting:

[...] 
0x400ee4: svC#0x0 
0x400ee8: orr x3, x0, x0 
0x400eec: mov w2, w3 
0x400ef0: mov w1, #0x1     // #1 
0x400ef4: orr x0, x20, x20 
0x400ef8: bl 0x402660     // Jump instr 
0x400efc: mov w1, #0x3     // #3 
0x400f00: orr x0, x20, x20 
[...] 

我想能夠:使用快捷

  1. 跳轉到一個地址:例如,我希望能夠在指令bl 0x402660中點擊0x402660,然後按F3跳轉到st由0x402660創作。我還希望能夠回到我正在使用另一個快捷方式的地方。
  2. 生成控制流/圖

當然,你可以建議工具/腳本的任意組合,將工作(即,如果你認爲這樣做將是進口上市的最佳途徑Excel和寫入VB宏,這很好)。不過,請記住我有一個aarch64二進制文件(許多工具與此體系結構不兼容),並且我的二進制文件在運行時解碼其機器碼。

+0

你在使用ARM Foundation模型還是Qemu?我正在嘗試使用gdb來調試在Foundation模型上運行的二進制文件,但到目前爲止,我無法像使用Qemu一樣將它附加到它上面。 – Vinz

回答