基本原理
so 的加载部分,加了个壳,然后加载内存加载,然后Ollvm混淆,还加了一点字符串加密

特征上报


获取设备地址,比如MAC地址、IMEI、IMSI


比较厉害的是,他做了一个直接在Linux Api上获取MAC地址的辅助函数,
大概就是创建一个Socket,然后通过ioctl获取MAC地址(直接钩住ioctl别让他返回个假地址,或者直接禁止获取就行了)
不过,经过测试,这个函数只能针对Android 6及以下版本,Android 6以上的获取不了,没什么用

辅助特征
辅助特征,就是不直接影响ID的生成,但是辅助它判断是否为同一个设备
电池特征


还有,一些Android ID、DNS之类的特征(主要就是调用Java API来实现的)
安全环境监测
这个是重点,无论你特征去除伪装做得多好,只要它找到模拟器特征,基本上就直接否了
首先是最基本的,也是最常用的两个特征:
1. “ro.secure”:”1″,
2. “ro.debuggable”:”1″,
然后是各种文件判断,和特征判断

判断是否有roo权限(有的话,会判断为高危设备):

破解方法
直接去掉上述特征,然后伪造个新特征,基本可以过掉。但是需要注意的是,一定要把模拟器特征去掉,最好是用真机,不断去修改特征就行了。它貌似判断逻辑是云端的,所以它后面应该是有一个比较全面的特征库。就是收集各种手机、和模拟器的特征,然后进行深度比对,如果发现信息不正常,基本上就否掉了。至于怎么过特征。我给提出以下建议:
1.尽量去复制真机的特征(像ro.build.*、ro.device.*这类的)
2.尽量隐藏模拟器特征
3.用户行为特征去除(这个的话,直接写个脚本去模拟就行了)