看我如何绕过android P的Restrictions on non

  • 时间:
  • 浏览:0

实际上无论谷歌咋样限制,主要否是 在内核层限制,在什儿 人的应用程序空间后边限制励志的话 ,理论上否是 都还还可以 绕过的。

到这里,可能不想再跟踪上层应用了,什儿 逻辑可能很清楚了,有兴趣的都还还可以 什儿 人继续跟踪上去。

do_hidden_api_checks_是个全局变量,继续查找do_hidden_api_checks_ 的引用,都还还可以 发现有个SetHiddenApiChecksEnabled的函数,

接着查找函数引用,找到上层函数ShouldBlockAccessToMember,

https://android.googlesource.com/platform/art/+/d7fbc0eb824e495b940dd739404d945a35f01fd3%5E%21/#F2(感谢武华第一时间给我发了代码diff)

什儿 提交是避免hidden API的情况的,大伙儿都还还可以 的代码差越多就在这后边了。通过逆向思维,大伙儿查找打印出warning的关键字Accessing hidden method ,都还还可以 定位到函数在https://android.googlesource.com/platform/art/+/master/runtime/hidden_api.h

什儿 ,咋样让do_hidden_api_checks_赋值为false很明显了,直接调用什儿 函数SetHiddenApiChecksEnabled(false)即可,不过找到什儿 函数地址也是一阵一阵小难度的,要找到Runtime什儿 实例的基地址加上SetHiddenApiChecksEnabled的函数偏移才行,什儿 偏移不到硬编码,什儿 从 Android N 现在现在开始,谷歌对NDK调用私有API的行为做了限制,原因分析分析分析通过dlopen系统库和dlsym函数符号找到函数地址可能失效了,不过大伙儿还是都还还可以 通过什儿 一阵一阵的手段避免什儿 难题的,这里就不继续深入了,有兴趣的都还还可以 私下找我探讨。

android P出了个新形态学 ,限制了对hidden field 和 method 的 反射调用,那组件化那此否是 都快要挂了。我第一感觉应该是都还还可以 绕过的,于是马上研究了下,详情都还还可以 看

https://developer.android.com/preview/restrictions-non-sdk-interfaces.html

限制私有api的调用,这原因分析分析分析目前几乎所有的组件化框架和多开那此否是失效,那此框架都反射调用了极少量的私有系统api,android P目前给了大伙儿4个 多过渡的时间,用了私有api的暂时不想奔溃,不会在logcat否是给经常出现warning,比如:

但以前的版本,就会出更严格的限制,使用那此api直接回抛Error,比如:NoSuchFieldError和NoSuchMethodError

runtime->AreHiddenApiChecksEnabled这里是个很关键的开关,当开关是false的以前,会不检查私有函数的调用。在

https://android.googlesource.com/platform/art/+/master/runtime/runtime.h大伙儿找到了什儿 函数的逻辑: