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

  • 时间:
  • 浏览:0
  • 来源:UU直播快三官方_大发UU直播快3

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

到这里,导致 不想再跟踪上层应用了,一些逻辑导致 很清楚了,有兴趣的可不能不能否可不能不能我本人继续跟踪上去。

do_hidden_api_checks_是个全局变量,继续查找do_hidden_api_checks_ 的引用,可不能不能否可不能不能发现有个SetHiddenApiChecksEnabled的函数,

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

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

限制私有api的调用,这导致 目前几乎所有的组件化框架和多开哪此全部都是失效,哪此框架都反射调用了血块的私有系统api,android P目前给了亲们一俩个 多过渡的时间,用了私有api的暂时不想奔溃,或者在logcat全部都是给突然出显warning,比如:

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亲们找到了一些函数的逻辑:

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

或者,怎么才能 才能 让do_hidden_api_checks_赋值为false很明显了,直接调用一些函数SetHiddenApiChecksEnabled(false)即可,不过找到一些函数地址也是有点儿小难度的,要找到Runtime一些实例的基地址加在SetHiddenApiChecksEnabled的函数偏移才行,一些偏移可不能不能可不能不能硬编码,或者从 Android N 开使英语 ,谷歌对NDK调用私有API的行为做了限制,导致 通过dlopen系统库和dlsym函数符号找到函数地址导致 失效了,不过亲们还是可不能不能否可不能不能通过一些有点儿的手段避免一些间题的,这里就不继续深入了,有兴趣的可不能不能否可不能不能私下找我探讨。

实际上无论谷歌为啥限制,主要全部都是在内核层限制,在我本人的程序运行空间上端限制说说,理论上全部都是可不能不能否可不能不能绕过的。