如何在aarch64汇编列表中轻松导航

时间:2014-04-19 16:01:05

标签: assembly arm reverse-engineering arm64

我有一个混淆的 aarch64 (64位ARM,又名armv8)二进制文件,我试图理解。该程序从其.data部分解码/解密机器指令,将它们存储到内存中,然后跳转到该地址。

我可以使用以下gdb命令检索机器的说明。如上所述,使用objdump无法获得这些指令,因为它们是经过编码/加密的,而二进制文件在运行时对它们进行解密。

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

这会在工作目录中生成一个包含aarch64程序集的gdb.txt文件:

[...]
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. 使用快捷方式跳转到某个地址:例如,我希望能够点击0x402660指令中的bl 0x402660并按F3跳转到该行开头按0x402660。我还希望能够回到我使用另一个快捷方式的地方。
  2. 生成控制流程/图表
  3. 当然,您可以建议任何可行的工具/脚本组合(例如,如果您认为最好的方法是在Excel中导入列表并编写VB宏,那很好)。但是,请记住我有一个aarch64二进制文件(许多工具与此体系结构不兼容)并且我的二进制文件在运行时解码其机器代码。

1 个答案:

答案 0 :(得分:2)

最好的工具是IDA Pro Advanced。

此类问题有一个特定的堆栈交换网站:https://reverseengineering.stackexchange.com/

对于你的特定二进制文件,它不是一个普通的二进制文件,混淆是让挑战更有趣:)(for those wondering what this is about