android.so函数说明,Andriod so加固

原标题:Andriod so加固

随着移动互联网的爆发性增长,人们对移动应用的需求变得越来越复杂,企业在带给用户众多便利和享受的同时,却容易忽视应用自身的安全性问题,一旦遭受攻击,就会给企业和用户的经济或声誉带来影响。本文主要是站在企业的角度,阐述如何通过给android SO(动态链接库)加壳来提升移动APP的安全性,减少SO被逆向反汇编分析的风险。

一、so 的加载过程分析

6e3e9614a850d5716b260ffdc0c3eb58.png

二、分析系统加载 so 的原理 1、用 mmap 函数映射 so 文件到内存

fa01eb5033935d79cbdcaaffe245a1e1.png

2、映射内存根地址

8960ca46308dc9518fb3143cfa067af7.png

3、映射 so 代码 load 内存

af46329d4f98a6b1c28354d0ee417bb9.png

4、映射 soinfo 结构体和重定向

94f2baef0e72604c831cdaf7d56f5205.png

5、重定向系统函数

4f9f9231ba3f399f74d8e7a90a351667.png

6、调用初始化函数和函数数组

b5f60c71171d73554a296964989e5cb0.png

7、还原系统权限

8、单个函数加密

50a458dd0603087ecd5d2b799b88063e.png

三、难点分析

1、在 android 7.0之后 dlopen 不返回 soinfo 结构体,通过读取 maps 获取基地址读取系统 so 的结构体 2、在 android 5.1之后 出现 read 被 pread 64函数读取 so 的结构 3、在 android 4.1.2 5.0 7.0等 page_size 也是内存大小有改变 4、在 android 4.4之后都是 c++ 考虑安全问题 用 c 语言实现

四、加固前后对比图

a9a8e951a3481ceee30de75779393385.png

开源代码地址:https://github.com/liumengdeqq/CustomLinker.git返回搜狐,查看更多

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值