汇编程序ARM强制一个布尔方法返回始终为TRUE

时间:2012-11-28 16:30:26

标签: assembly arm patch ida

这是我的代码的结尾,我的东西包含return函数。

MOVW            R1, #0x7368
ADD             R0, PC  ; 
MOVT.W          R1, #0xF
ADD             R1, PC ; 
LDR             R0, [R0] ; 
LDR             R1, [R1] ; 
LDR             R0, [R4,R0]
BLX             _objc_msgSend
MOVW            R1, #0x7DC4
MOV             R2, R8
MOVT.W          R1, #0xF
MOV             R3, R6
ADD             R1, PC ; 
LDR             R1, [R1] ; "
BLX             _objc_msgSend
LDR.W           R8, [SP+0x10+var_10],#4
POP             {R4-R7,PC}

有人可以评论它做了什么,并解释我如何强制返回指令,我认为它总是返回TRUE!

我提出的代码部分是一个布尔函数,它进行一些操作而不是返回TRUE或FALSE。

由于

1 个答案:

答案 0 :(得分:2)

如果您的编译器遵循ARM体系结构的过程调用标准,那么返回值将在R0中传递。 POP指令恢复其他寄存器并加载PC以返回调用函数,但不加载R0。如果您希望函数始终返回布尔值true,则需要在加载POP的{​​{1}}之前添加指令。