IDA Pro:如何修改子程序以始终返回true?

时间:2014-09-14 11:27:09

标签: assembly arm ida

这是常规。任何人都可以解释我需要修改以使其返回TRUE

__text:00086494 ; =============== S U B R O U T I N E =======================================
__text:00086494
__text:00086494 ; BLAH - (char)free
__text:00086494
__text:00086494 ; char __cdecl -[BLAH free](struct BLAH *self, SEL)
__text:00086494 __BLAH_free_                   ; DATA XREF: __objc_const:00BC0CECo
__text:00086494                 MOV             R1, #(_OBJC_IVAR_$_BLAH._free - 0x864A0) ; char _free;
__text:0008649C                 ADD             R1, PC  ; char _free;
__text:0008649E                 LDR             R1, [R1] ; char _free;
__text:000864A0                 LDRSB           R0, [R0,R1]
__text:000864A2                 BX              LR
__text:000864A2 ; End of function -[BLAH free]

1 个答案:

答案 0 :(得分:4)

几乎任何ARM ABI都传递r0中的返回值,这段代码看起来也不例外。在这种情况下,ldrsb r0, [r0, r1]使用r0中的self指针和r1中的计算偏移量加载返回值。由于这没有副作用或其他复杂行为需要考虑,您可以简单地替换该指令,具体取决于TRUE的实际数值应该是多少,例如mov r0, #1mvn r0, #0