版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010019468/article/details/82805131
Android P non-sdk
对于非sdk接口的hide field和方法,Android P进行限制调用,可以参考如下文章https://juejin.im/post/5b8959f96fb9a019fe685eb3
为了适配P,整体原则就是能绕过non-sdk方法就想办法找到兼容替代方法,实在不行就把TargetSdk 降低到28
以下是对目前使用的到Hook方面以及插件化中在P中的限制api 调用
关于插件中Hook
目前Hook 涉及到Instrumentation 、IActivityManager、IContentProvider,均通过查询并没有限制这些实例的限制,应该是可以使用的。1)Instrumention 主要是Hook ActivityThread中的mInstrumentation
对于资源Resource的加载
摒弃现在通用的 反射方式调用addAssetsPath接口,也就是上述的灰度名单
采用如下方式获取到AssertManager:
PackageManager packageManager = mContext.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageArchiveInfo(apkPath, flags);
ApplicationInfo applicationInfo = packageInfo.applicationInfo;
Resources resources;
try {
resources = packageManager.getResourcesForApplication(applicationInfo);
} catch (PackageManager.NameNotFoundException e) {
}
//获取AssetManager ,避免反射方式实现
AssetManager assets = resources.getAssets();
暴力破解限制
参考 https://yq.aliyun.com/articles/609421
无论谷歌怎么限制,主要不是在内核层限制,在自己的进程空间里面限制的话,理论上都是可以绕过的。一句话就是Hook 源码中的判断逻辑