ios逆向 之 匯編

iPhone手機(jī)使用的是ARM匯編,不同的設(shè)備CPU的架構(gòu)也是不相同的。

armv6: ?iPhone, iPhone2, iPhone3G, 第一代、第二代 iPod Touch

armv7: ?iPhone3GS, iPhone4, iPhone4S,iPad, iPad2, iPad3(The New iPad), iPad mini, iPod Touch 3G, iPod Touch4

armv7s: ?iPhone5, iPhone5C, iPad4(iPad with Retina Display)

arm64: ?iPhone5S 及以后版本.


arm64 經(jīng)常用到的匯編指令:


MOV X1,X0 ;將寄存器X0的值傳送到寄存器X1`

ADD X0,X1,X2 ;寄存器X1和X2的值相加后傳送到X0

SUB X0,X1,X2 ;寄存器X1和X2的值相減后傳送到X0

AND X0,X0,#0xF ; X0的值與0xF相位與后的值傳送到X0

ORR X0,X0,#9 ; X0的值與9相位或后的值傳送到X0

EOR X0,X0,#0xF ; X0的值與0xF相異或后的值傳送到X0

LDR X5,[X6,#0x08] ;X6寄存器加0x08的和的地址值內(nèi)的數(shù)據(jù)傳送到X5

STR X0, [SP,#0x8] ;X0寄存器的數(shù)據(jù)傳送到SP+0x8地址值指向的存儲(chǔ)空間

STP x29, x30, [sp,#0x10] ;入棧指令

LDP x29, x30, [sp,#0x10] ;出棧指令

CBZ ;比較(Compare),如果結(jié)果為零(Zero)就轉(zhuǎn)移(只能跳到后面的指令)

CBNZ ;比較,如果結(jié)果非零(Non Zero)就轉(zhuǎn)移(只能跳到后面的指令)

CMP;比較指令,相當(dāng)于SUBS,影響程序狀態(tài)寄存器CPSR?

B/BL ;絕對(duì)跳轉(zhuǎn)#imm, 返回地址保存到LR(X30)

RET ;子程序返回指令,返回地址默認(rèn)保存在LR(X30)

????????<void doWhileSomeThing(int aa){

?????do {

? ? ? ? aa=aa+aa;

? ? ? ? printf("doWhileSomeThingdoWhileSomeThingdoWhileSomeThing");

? ? } while (aa<100);

}>

<pre>

<code> ? ? ?</code>

</pre>

int doSwiftSome(int a){

? ? switch (a) {

? ? ? ? case 1:

? ? ? ? {

? ? ? ? ? ? printf("switch1111111111");

? ? ? ? }

? ? ? ? break;

? ? ? ? case 2:

? ? ? ? {

? ? ? ? ? ? printf("switch22222222");

? ? ? ? }

? ? ? ? ? ? break;

? ? ? ? case 3:

? ? ? ? {

? ? ? ? ? ? printf("switch333333333");

? ? ? ? }

? ? ? ? ? ? break;


? ? ? ? default:

? ? ? ? ? ? printf("switchdefaultdefaultdefaultdefault");

? ? ? ? ? ? break;

? ? };

? ? return 0;ModelTestViewController

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容