在成功提取解释器共享库后,apk加固后JNI报错我们继续深入分析首先,我们发现APK运行后会加载该解释器共享库,并通过其JNI_Onload方法该方法最终调用了__fun_a_18函数,这个函数通过控制流混淆使流程复杂化我们并没有发现它使用了ollvm进行混淆编译,而可能是在源码中利用whileswitch实现了一种“控制流平坦化”apk加固后JNI报错的。
一般的加固方法都是对原apk先进行加密,然后和壳合并生成新的apk壳是用来解密apk的dex文件当应用启动时,壳先解密原apk,准备好自己定义的ClassLoader,然后获取源程序中的Application名称,通过反射找到正确的Application对象,运行它的onCreate方法,这样原apk才能被真正运行其他一些反调试的方法有针对。
dex动态类加载爱加密加固后的dex文件源码可以动态分离,在运行时,将源码分段加载到内存当中内存防dump程序运行时会释放代码,内存防dump可以防止程序运行时被劫持应用安全包括log日志输入屏蔽应用清场清场技术依赖于云端黑名单白名单DB,应用每次启动后便自动进行本地的黑名单白名单DB数据。
发表评论