为了防止app调用系统的hide方法,android 9.0对反射的调用做了一个限制,每个方法或者变量在编译后在flag里表示了该方法是hide还是公开,通过回溯调用栈判断该调用者的类是否是BootstrapClassLoader 如果是则信任
应对方法
1,定义和系统相同类,骗过编译器,直接调用隐藏方法
2. jni修改 javaruntime里的 隐藏api策略, hidden_api_policy_
3.既然只检查调用类是否是是系统类,那么使用反射去调用反射方法,两次反射,第二次调用系统方法,在检查的时候会发现调用者反射工具类,而反射工具类是系统方法
4。 修改 javaruntime .里的豁免条件GetHiddenApiExemptions ,可以使用反射+反射