ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 网络编程 >> 移动开发 >> Android伪造类来调用hide方法的原理

Android伪造类来调用hide方法的原理

来源:网络整理     时间:2018-10-17     关键词:

本篇文章主要介绍了" Android伪造类来调用hide方法的原理",主要涉及到方面的内容,对于移动开发感兴趣的同学可以参考一下: 最近的一个需求需要用到系统hide方法,需要安装在android 9.0 (Android P)上。因为9.0开始,hide方法对反射方法调用做了限制,所以我用...

最近的一个需求需要用到系统hide方法,需要安装在android 9.0 (Android P)上。

因为9.0开始,hide方法对反射方法调用做了限制,所以我用到了之前更习惯用的伪造类的方法来解决。

举例:

要用到这个类

我们需要按照同样的路径和类声明在自己的工程中新建一个类:


 至于里面的方法,你需要用的你就把方法声明严格复制过来,方法的实现则不用。比如void方法完全可以留空,init方法可以直接return 0;不需要用的方法则可以直接不用要。只要能保证你的调用的地方能编译通过即可。

有同事对这个方法心存疑虑,实际执行的时候到底是执行的系统方法还是你伪造的这个方法呢?

我要肯定的告诉你,执行的是系统方法。

原因是:java类加载的双亲委托模型:

(来源于https://blog.csdn.net/itachi85/article/details/78088701)

(来源于https://www.jianshu.com/p/ba34eb96c45f)

双亲委托模型保证了一个类只会被加载一次。一个应用启动过程中系统创建了一个java虚拟机,然后BootClassLoader加载系统的类,包括java和android的类。这时候系统中的类(比如上面的android.bluetooth.BlutoothCodecConfig)已经加载完成。后面应用启动起来后,运行到调用的地方classloader发现这个类已经加载完成了,就不会再加载。所以我们伪造的这个类压根没有机会被加载。

以上就介绍了 Android伪造类来调用hide方法的原理,包括了方面的内容,希望对移动开发有兴趣的朋友有所帮助。

本文网址链接:http://www.codes51.com/article/detail_4593279.html

相关图片

相关文章