idaq是一种流行的破解工具,可以通过它查看可执行文件的内部arm汇编代码,间接得到或猜测竞争对手可执行文件的代码。
下面举例简单分析一个iPhone应用程序对应的arm汇编代码:
STMFD SP!, {R4,R7,LR} // 入栈操作,一般任何函数的开始都会有此指令
LDR R1, =(off_13F888 - 0xB651C) // 将 =(off_13F888 - 0xB651C)对应的内存值移动到寄存器R1中
ADD R7, SP, #4 // R7 <------ SP + 4
BL _objc_msgSend // 跳转到子例程_objc_msgSend处执行,执行完后返回继续执行
MOV R4, R0 // R4 <------ R0
LDMFD SP!, {R4, R7, PC} // 出栈操作,一般任何函数的最后都会有此指令
以后会根据不同应用程序的不同模块,更加细致的分析内部运行原理。
--- xichen2 陈曦