【问题标题】:How to navigate easily in aarch64 assembly listing如何在 aarch64 汇编列表中轻松导航
【发布时间】:2014-06-04 00:46:21
【问题描述】:

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

我可以使用以下 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 跳转到以0x402660 开头的行。我还希望能够回到我使用另一个快捷方式的位置。
  2. 生成控制流/图表

当然,您可以建议任何可行的工具/脚本组合(即,如果您认为最好的方法是在 Excel 中导入列表并编写 VB 宏,那很好)。但是,请记住我有一个 aarch64 二进制文件(很多工具与此架构不兼容),并且我的二进制文件在运行时解码其机器代码。

【问题讨论】:

  • 您使用的是 ARM Foundation 模型还是 Qemu?我正在尝试使用 gdb 调试在 Foundation 模型上运行的我的二进制文件,但到目前为止,我无法像使用 Qemu 那样附加它。

标签: assembly arm reverse-engineering arm64


【解决方案1】:

最好的工具是 IDA Pro Advanced。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    相关资源
    最近更新 更多