美文网首页
ios逆向 之 汇编

ios逆向 之 汇编

作者: 无际天空 | 来源:发表于2018-06-30 17:08 被阅读4次

    iPhone手机使用的是ARM汇编,不同的设备CPU的架构也是不相同的。

    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 经常用到的汇编指令:

    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的和的地址值内的数据传送到X5

    STR X0, [SP,#0x8] ;X0寄存器的数据传送到SP+0x8地址值指向的存储空间

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

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

    CBZ ;比较(Compare),如果结果为零(Zero)就转移(只能跳到后面的指令)

    CBNZ ;比较,如果结果非零(Non Zero)就转移(只能跳到后面的指令)

    CMP;比较指令,相当于SUBS,影响程序状态寄存器CPSR 

    B/BL ;绝对跳转#imm, 返回地址保存到LR(X30)

    RET ;子程序返回指令,返回地址默认保存在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

    }

    相关文章

      网友评论

          本文标题:ios逆向 之 汇编

          本文链接:https://www.haomeiwen.com/subject/byztuftx.html