【发布时间】:2014-09-07 08:43:44
【问题描述】:
我想在这里询问手臂指令中发生了什么。我了解 ASM,但我很难理解 ARM。我尝试在互联网上查找提供基础知识的信息,但我正在查看的内容有点不同。所以这是我试图理解的代码..你能解释一下这些说明在做什么吗?我会标记那些我不明白的。它是来自 IDA 的代码。有人可以解释整个功能。我将不胜感激。谢谢
LDR R3, =(unk_E9BFB0 - 0x6B1B4C) //This once,i dont get it, is it subtracting?
LDR R8, [R5]
MOV R1, R6
ADD R3, PC, R3
LDR LR, [R4,#0xC] //This instruction
LDR R12, =(aDraw_debug - 0x6B1B68) //This once
MOV R2, R7
STR R8, [R3,#0x30]
MOV R0, R3
STR R4, [R3]
ADD R12, PC, R12 ; "draw_debug" //This once
STR R3, [R5]
STR R12, [R3,#0x2C]
ADD R12, LR, #1
STR R12, [R4,#0xC]
BL __aeabi_atexit
【问题讨论】:
-
你试过ARM的website吗?
-
"有人能解释一下整个函数吗?"简而言之,没有。 a)它显然不是一个“整个函数”,因为最后没有返回,b)它是一系列指令,读取一些内存地址,计算一些偏移量,并写入一些内存地址 - 我非常怀疑任何人都可以解释 为什么没有比在这里重现更多的上下文。
标签: android assembly arm reverse-engineering