【问题标题】:What does this code mean? Arm assembler这段代码是什么意思?手臂组装机
【发布时间】:2016-03-30 17:31:37
【问题描述】:
000 LDR             R0, =0x13A3D ; Load from Memory
000 LDR             R1, =0x4000000 ; Load from Memory
000 LDR             R3, =0x400058C ; Load from Memory
000 CMP             R0, R1  ; Set cond. codes on Op1 - Op2
000 BEQ             loc_81B0 ; Branch

我是 arm 和汇编程序的新手。这段代码是什么意思?

这是否意味着“如果 0x13A3D==0x4000000 则转到 loc_81B0 ”? 不可能。

【问题讨论】:

  • 是的,就是这个意思。也许他们故意设置条件代码,知道它不会分支,或者这个代码是为了防止逆向工程,让分支 dest 输入未定义的指令或其他与反汇编程序混淆的东西。
  • 断章取意,当然,但现在您需要查找所有可能的代码路径,这些代码路径最终可能会跳转到 cmp,而 r0 和 r1 设置不同。 ..

标签: assembly arm reverse-engineering


【解决方案1】:

如果它是循环的一部分,并且 r0 正在递增和/或 r1 正在递减,则条件 r0 == r1 将结束循环。

这假定 CMP 语句是循环的开始。

【讨论】:

    猜你喜欢
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    相关资源
    最近更新 更多