android自定义linker实现安全加固

开源代码地址:https://github.com/liumengdeqq/CustomLinker.git

        
 一.so的加载过程分析
       android自定义linker实现安全加固_第1张图片
    二.分析系统加载so的原理
     (1)用mmap函数映射so文件到内存 
              android自定义linker实现安全加固_第2张图片
        (2)映射内存根地址
         android自定义linker实现安全加固_第3张图片
          (3)映射so代码load内存
        android自定义linker实现安全加固_第4张图片
         (4)映射soinfo结构体和重定向
android自定义linker实现安全加固_第5张图片
             (5)重定向系统函数
android自定义linker实现安全加固_第6张图片

           (6)调用初始化函数和函数数组
android自定义linker实现安全加固_第7张图片
        (7)还原系统权限
android自定义linker实现安全加固_第8张图片
        (8)单个函数加密
android自定义linker实现安全加固_第9张图片
      
        三.难点分析
       (1).在android 7.0之后dlopen不返回soinfo结构体,通过读取maps 获取基地址读取系统so的结构体
       (2).在android5.1之后 出现read被pread64函数读取so的结构
       (3).在android4.1.2 5.0 7.0等page_size 也是内存大小有改变
       (4).在android4.4之后都是c++ 考虑安全问题 用c语言实现
        四.加固前后对比图
android自定义linker实现安全加固_第10张图片
     


你可能感兴趣的:(android自定义linker实现安全加固)