专栏名称: 鸿洋
你好,欢迎关注鸿洋的公众号,每天为您推送高质量文章,让你每天都能涨知识。点击历史消息,查看所有已推送的文章,喜欢可以置顶本公众号。此外,本公众号支持投稿,如果你有原创的文章,希望通过本公众号发布,欢迎投稿。
目录
今天看啥  ›  专栏  ›  鸿洋

Android hide api反射方案合集

鸿洋  · 公众号  · android  · 2024-07-05 08:35
    

文章预览

最近工作需要,反射了一下 android.app.QueuedWork 这个类,但是这个类的一些 Field 在Android P之后是不允许APP反射的,所以需要通过一些绕过系统限制的方法。借此机会了解了一下各个绕过hide限制的反射方案。 原理 我们先从原理上理解为什么Android可以实现限制我们反射某个api,反射不是Java的基础功能吗。以 getDeclaredMethod 为例,他最后会调用 java_lang_Class.cc 里的 Class_getDeclaredMethodInternal : 这里如果 ShouldDenyAccessToMember 返回true,那么就直接返回null了。所以Android就是修改了这部分的代码来加上访问限制。他会调用一个重载函数,传入 getHiddenapiAccessContextFunction 函数,这个函数会直接调用获取调用方的上下文。重载的 ShouldDenyAccessToMember 代码比较长,我直接把流程梳理成流程图: 所以我们只要弄清楚Context的domain和每个domain的规则是什么,基本就能弄清 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览