android自定义linker实现安全加固
开源代码地址:https://github.com/liumengdeqq/CustomLinker.git
一.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语言实现
四.加固前后对比图