--摘自《Android进阶解密》
1.Hook技术分类
1)根据Hook的API语言划分,分为Hook Java和Hook Native
* Hook Java主要通过反射和代理来实现,应用于在SDK开发环境中修改Java代码
* Hook Native则应用于在NDK开发环境和系统开发中修改Native代码
2)根据Hook的进程划分,分为应用程序进程Hook和全局Hook
* 应用程序进程Hook只能Hook当前所在的应用程序进程
* 应用程序进程是Zygote进程fork出来的,如果对Zygote进行Hook,就可以实现Hook系统所有的应用程序进程,这就是全局Hook
3)根据Hook的实现方式划分,分为如下两种
* 通过反射和代理实现,只能Hook当前的应用程序进程
* 通过Hook框架来实现,比如Xposed,可以实现全局Hook,但是需要root
2.动态代理是在代码运行时通过反射来动态地生成代理类的对象,并确定到底来代理谁。Java提供了动态的代理接口InvocationHandler,实现该接口需要重写invoke方法
欢迎关注我的微信公众号:安卓圈