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

  • 时间:
  • 浏览:0

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

实际上无论谷歌如可会会 限制,主要也有 在内核层限制,在本人的任务管理器空间后面 限制话语,理论上也有 还前要绕过的。

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

https://android.googlesource.com/platform/art/+/master/runtime/runtime.h我门歌词 找到了你这人函数的逻辑:

随后,如可让do_hidden_api_checks_赋值为false很明显了,直接调用你这人函数SetHiddenApiChecksEnabled(false)即可,不过找到你这人函数地址也是有点儿小难度的,要找到Runtime你这人实例的基地址打上去SetHiddenApiChecksEnabled的函数偏移才行,你这人偏移没法硬编码,随后从 Android N 开始英语 英语 ,谷歌对NDK调用私有API的行为做了限制,因为分析通过dlopen系统库和dlsym函数符号找到函数地址随后失效了,不过我门歌词 还是还前要通过一点有点儿的手段处置你这人问提的,这里就不继续深入了,有兴趣的还前要私下找我探讨。

但随后的版本,就会出更严格的限制,使用哪些api直接回抛Error,比如:NoSuchFieldError和NoSuchMethodError

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

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

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

限制私有api的调用,这因为分析目前几乎所有的组件化框架和多开哪些也有失效,哪些框架都反射调用了少量的私有系统api,android P目前给了我门歌词 有一个过渡的时间,用了私有api的暂时不让奔溃,随后 在logcat也有给再次总出 warning,比如:

到这里,随后不让再跟踪上层应用了,你这人逻辑随后很清楚了,有兴趣的还前要本人继续跟踪上去。

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