> 文档中心 > Android Hook的探索与实践

Android Hook的探索与实践


1.Hook的定义

Hook,中文译为“挂钩”或“钩子”。要“钩”到什么呢?在对特定的系统事件进行hook后,一旦发生已hook事件,对该事件进行hook的程序就能在第一时间对该事件做出响应,甚至可以截断此事件。
本文,侧重于Java层的hook。

2.如何Hook?

Hook其实很简单,总体概括,分为三步:

  • 釜底抽薪
    分析需求,看源码,找到hook的点。具体就是,分析您的研发需求,转换为具体的实际代码中,想要hook住哪个函数或者变量就可以达到效果?这个需求去根据需求去落实,找到代码。
  • 代拆代行
    通过静态代理 or 动态代理,去构造想要替换的函数或者变量。对于接口来说,当然自己使用动态代理,构造相应对象。对于具体类来说,可以通过静态代理,去构造相应对象。
  • 偷梁换柱
    使用我们创建的代理方法或者属性,通过反射的相关方法,替换系统的相关属性和方法。

从上面看到,想要理解 or 实现 hook,那就绕不过去两个概念,一个反射,一个代理,大家需要去认真需求一下,可以看小编的另外一篇文章。
好了简单先说了方法,接下来,我们结合实践,去看一下,如何应用上面三步骤去实现真正的hook。

2.1 hook onClick

步森服饰商城