Hook,又叫钩子,通常是指对一些方法进行拦截。这样当这些方法被调用时,也能够执行我们自己的代码,这也是面向切面编程的思想(AOP)。
这里涉及的是 Java 层面的 Hook。
需要涉及的内容:
1、代理模式
2、反射机制
(JDK 动态代理只支持接口,当要代理的类没有实现接口或者为了更好的性能,CGLIB是一个好的选择)
具体的步骤是:
1、找出 Hook 点(即找出被 Hook 的对象)
2、实现对应的代理类
3、使用反射机制替换掉被 Hook 的对象
具体的步骤可以参阅:Android插件化原理解析——Hook机制之动态代理
其他资料:
1、Android Hook技术防范漫谈
2、动态注入技术(hook技术)
3、CGLIB介绍与原理