我尝试在二进制文件中修改此反汇编的分支:
SUB SP, SP, #0x60
STP X26, X25, [SP,#0x50+var_40]
STP X24, X23, [SP,#0x50+var_30]
STP X22, X21, [SP,#0x50+var_20]
STP X20, X19, [SP,#0x50+var_10]
STP X29, X30, [SP,#0x50+var_s0]
ADD X29, SP, #0x50
MOV X20, X0
MOV X0, X2
BL _objc_retain
MOV X19, X0
ADRP X8, #selRef_shouldCheckForUpdate@PAGE
LDR X1, [X8,#selRef_shouldCheckForUpdate@PAGEOFF] ; char *
MOV X0, X20 ; void *
BL _objc_msgSend
CBZ W0, loc_ADCC
基本上,二进制文件正在检查更新并会提示是否应该更新,为了学习,我想实现如何:
总是去 loc_ADCC 和;
总是忽略 loc_ADCC(跳过去 loc_ADCC)
这个 ARM64 真的让我感到困惑,但是我可以在 32 位中理解它,但在 64 位中却无法理解。这就像一个新世界。您可以在此处查看屏幕截图以获得更好的可视化效果。
提前致谢!