I try to modify the branch of this disassembly in a binary:
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
Basically, the binary are checking for update and will prompt if it should, and for the sake of learning, I wanted to achieve on how to:
Always go to loc_ADCC and;
Always ignore loc_ADCC (Skip from going to loc_ADCC)
This ARM64 really got me confused, I could however understand it in 32bit, but not in 64bit. It's like a new world. You could see the screenshot here for a better visualization.
Thanks in advance!