背景
逆向过程中会针对so文件进行patch,把处理好的so重新放到/data/app/pkg/lib/xxx/目录中替换默认的so,这个情况下如何对抗?
方案1
系统在安装App的过程中,会把apk中的lib目录中的so文件复制到安装目录中,使用到的系统源码是NativeLibraryHelper.java
该工具主要用途是,在安装Apk过程中,如果Apk的manifest文件中配置了android:extractNativeLibs = true,系统会自动将apk文件中的so文件提取到指定目录下。然后在app启动时,构造App的ClassLoader并将该目录作为参数传入,从而实现native库的自动加载。
既然可以配置,在manifest中可以把android:extractNativeLibs = false,这样就安装apk就不会释放到安装目录了。
对抗方案:自定义ROM,在解析manifest的时候,判断android:extractNativeLibs = false标签的值,把这个值强制解析true,或者直接写死,或者做一个动态配置开关控制是否要释放出来。
方案2
要把patch过的so放到安装目录中替换,App加载这个替换的so的前提是,selinux关闭。这个时候,检测系统的selinux状态如果处于宽容模式,就上报风险,App崩溃不允许启动。