《iOS 逆向》004-指针以及指针的反汇编

  1. 指针 64位中 占8个(64Bit)字节
    1. 编译器决定了指针不能做乘法和除法
    2. 指针的运算结果,由它所指向的数据类型的宽度。决定!(即去掉一个星看这个数据类型)
    3. 数据类型可以强制转换的,结构体和基本类型不可转换。任何变量都可以使用&(取地址符)
int* a;
    a = (int *)100;
    a++; 
    printf("%d",a);
打印结果 104
  char* a;
    a = (char *)100;
    a++;
    
    printf("%d",a);
打印结果 101
    char** a;
    a = (char **)100;
    a++;
    
    printf("%d",a);
打印结果 108

指针加减法所得结果需要除以指向类型的宽度(int类型的宽度是4)

int * a;
    a = (int*)100;
    
    int * b;
    b = (int *)200;
    
    int x = a - b;
    printf("%d",x);
    打印结果 -25

指针的反汇编形式(图1 为汇编详解)

高级代码:


    int *a;
    int b = 13;
    a = &b;
    

汇编源码

      0x100c068c4 <+0>:  sub    sp, sp, #0x20             ; =0x20 
栈空间拉伸32个字节(即0x16b5f39a0-->0x16b5f3980)
    0x100c068c8 <+4>:  stp    x29, x30, [sp, #0x10]
x29,x30的值写入sp偏移0x10的栈空间
    0x100c068cc <+8>:  add    x29, sp, #0x10            ; =0x10 
x29指向此时的栈底即(0x16b5f3990)
    0x100c068d0 <+12>: add    x8, sp, #0x4              ; =0x4
    sp偏移0x4(0x16b5f3984)的地址给x8 
    0x100c068d4 <+16>: mov    w9, #0xd
      0xd立即数给w9
    0x100c068d8 <+20>: str    w9, [sp, #0x4]
    0xd立即数 写入栈空间(0x16b5f3984---0x16b5f3980)
    0x100c068dc <+24>: str    x8, [sp, #0x8]
x8的地址0x16b5f3984(立即数的地址)存入到栈空间中0x16b5f3988-0x16b5f3990
    0x100c068e0 <+28>: adrp   x0, 1

    0x100c068e4 <+32>: add    x0, x0, #0xf2c    
图1.jpeg

(内存的读写往高地址走)

C的数组(指针的基本运算)

 int arr[5] = {1,2,3,4,5};
    for (int i = 0; i < 5; i++) {
        //正常打印
        printf("%d",arr[i]);
    }
//arr这个变量指向的就是元素的首地址,相当于指针。
    int arr[5] = {1,2,3,4,5};
    for (int i = 0; i < 5; i++) {
        //指针加一相当于指针偏移int个字节。(arr + 1)是地址
        //取出地址所指向的数据* (arr + 1)
        printf("%d",*(arr + i));
    }

举一反三

    int * a =arr;
    for (int i = 0; i < 5; i++) {
        
        printf("%d",a++);
    }
    //指针的运算
    char ** p1;
    //p1所指向的数据类型是char* 的指针,(p1 + 2)偏移16个地址(0x10)
    //char * 所指向的数据类型是char , *(xxx + 2)偏移两个地址(0x2)
    char c = *(*(p1 + 2) + 2
//和上一句代码的汇编一样。
    char c1 = p1[2][2];
    0x1042c68f0 <+0>:  sub    sp, sp, #0x10             ; =0x10 
    0x1042c68f4 <+4>:  ldr    x8, [sp, #0x8]
->  0x1042c68f8 <+8>:  ldr    x8, [x8, #0x10]
    0x1042c68fc <+12>: ldrb   w9, [x8, #0x2]
    0x1042c6900 <+16>: strb   w9, [sp, #0x7]
    0x1042c6904 <+20>: add    sp, sp, #0x10             ; =0x10 
    0x1042c6908 <+24>: ret 

指针的基本用法

    //下面四句代码,两两的汇编代码是一样的(c&c1;d&d1)如图2
    char c = *p1;
    char c1 = p1[0];
    char d = *(p1 + 1);
    char  d1 = p1[1];
图2.png

二级指针的反汇编

 //多级指针
    char ** p1;
    char c = **p1;
    
    0x10065e8f0 <+0>:  sub    sp, sp, #0x10             ; =0x10 
->  0x10065e8f4 <+4>:  ldr    x8, [sp, #0x8]
    0x10065e8f8 <+8>:  ldr    x8, [x8]
    0x10065e8fc <+12>: ldrb   w9, [x8]
    0x10065e900 <+16>: strb   w9, [sp, #0x7]
    0x10065e904 <+20>: add    sp, sp, #0x10             ; =0x10 
    0x10065e908 <+24>: ret   

参考资料:

--> 一级指针二级指针详解

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容