首页
社区
课程
招聘
[原创]android so加固
发表于: 2018-5-10 18:05 16494

[原创]android so加固

2018-5-10 18:05
16494


 一.so的加载过程分析
      
    二.分析系统加载so的原理
     (1)用mmap函数映射so文件到内存 
             
        (2)映射内存根地址
         
          (3)映射so代码load内存
        
         (4)映射soinfo结构体和重定向

             (5)重定向系统函数


           (6)调用初始化函数和函数数组

        (7)还原系统权限

        (8)单个函数加密

      
        三.难点分析
       (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语言实现
        四.加固前后对比图

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

      
    二.分析系统加载so的原理
     (1)用mmap函数映射so文件到内存 
             
        (2)映射内存根地址
         
          (3)映射so代码load内存
        
         (4)映射soinfo结构体和重定向

             (5)重定向系统函数


           (6)调用初始化函数和函数数组

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2019-5-25 11:46 被liumengde编辑 ,原因:
收藏
免费 2
支持
分享
最新回复 (20)
雪    币: 9217
活跃值: (1886)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2018-5-10 21:45
0
雪    币: 6818
活跃值: (153)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
2018-5-10 22:40
0
雪    币: 92
活跃值: (508)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
2018-5-11 11:00
0
雪    币: 116
活跃值: (354)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
感谢分享
2018-5-11 13:20
0
雪    币: 6
活跃值: (1146)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
好像不全啊
2018-5-12 18:26
0
雪    币: 210
活跃值: (641)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
7
学习一波,感谢分享
2018-5-12 19:58
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
2018-5-13 16:02
0
雪    币: 2714
活跃值: (1611)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
谢谢分享。
2018-5-14 09:07
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
谢谢分享
2018-5-14 09:15
0
雪    币: 189
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
谢谢分享
2018-5-14 14:44
0
雪    币: 220
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
谢谢分享
2018-5-14 20:52
0
雪    币: 207
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
      感谢分享·如有需要请使用小蜜盾  为iOS/Android插件开发者提供专业极致的dylib/so在线加固服务,一键上传,免费加固,欢迎品鉴  www.xmprotect.com
2018-5-19 09:03
0
雪    币: 4
活跃值: (137)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
14
7.0的在下面这部分会返回-1造成加载失败  如何处理?
        s = &symtab[sym];
        if (ELF_ST_BIND(s->st_info) != STB_WEAK) {
          DL_ERR("cannot locate symbol \"%s\" referenced by \"%s\"...", sym_name, name);
          return -1;
        }
2018-7-4 10:37
0
雪    币: 4
活跃值: (137)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
soinfo::Relocate函数里面
2018-7-4 10:38
0
雪    币: 18
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16
hi,您好,我测试了很多遍,但是都没有测试通过,一直都显示找不到getString方法,您方便提供一下libfoo.so的实现方式吗?
2019-3-20 17:18
0
雪    币: 18
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
17
我也是遇到了这个问题,您解决了吗?
2019-3-20 17:20
0
雪    币: 221
活跃值: (48)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
同问 :你们能跑吗?
2019-3-29 17:48
0
雪    币: 221
活跃值: (48)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
你们解决了吗?
2019-4-2 15:37
0
雪    币: 120
活跃值: (1597)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
感谢分享
2019-4-3 23:44
0
游客
登录 | 注册 方可回帖
返回
//