美文网首页
IOS逆向_ASLR

IOS逆向_ASLR

作者: 一杯开水 | 来源:发表于2019-11-04 16:41 被阅读0次

    1. ASLR的简介;

    2. 计算APP中一段代码的真实内存地址;


    1. ASLR的简介;

            1.1 ASLR的概念:(Address Space Layout Randomization ) 地址空间配置随机加载;是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位攻击代码位置,达到阻止溢出攻击的目的的一种技术; iOS4.3开始引入了ASLR技术。

            1.2 作用:地址空间配置随机加载利用随机方式配置数据地址空间,使某些敏感数据(例如APP登录注册、支付相关代码)配置到一个恶意程序无法事先获知的地址,令攻击者难以进行攻击。


    2.计算APP中一段代码的真实内存地址;

            2.1 MachO的组织架构简介:

            2.2 使用MachOView分析MachO的组织架构(对MachO文件静态分析、未使用ALSR技术):

    image

                ① 函数代码存放在__TEXT段中;

                ② 全局变量存放在__DATA段中;

                ③ 可执行文件的内存地址是0x0;

                ④ 代码段(__TEXT)的内存地址,就是LC_SEGMENT_64(__TEXT)中的VM Address;

                ⑤ LC_SEGMENT_64(__PAGEZERO)的虚拟内存大小在ARM64架构下为:0X100000000,在非ARM64架构下为:0X4000;

                ⑥  也可以使用size -l -m -x指令来查看Mach-O的内存分布:

    image

                ⑦ vim address、vim Size:

    image

                ⑧ File Offset、File Size:    

    image

            2.3 MachO文件加载到内存后、ASLR随机产生的Offset(偏移):

                 ① 函数的内存地址(VM Address) = File Offset(LC_SEGMENT_64(__TEXT)的File Offset) + ASLR Offset +__PAGEZERO Size ;

    image

                ② Hopper、IDA工具只是对MachO文件进行今天分析、所以分析出的地址都是未使用ASLR的VM Address;


    (PS : 其中有部分章节是从前人的文章中搬运过来整理而成,这些文章里已经对部分知识点解释的很清楚明了了,我也没有更好的表达方式,所以站在巨人的肩膀上,我只是一个整理者加了部分自己的理解。)

    相关文章

      网友评论

          本文标题:IOS逆向_ASLR

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