1.Hook的定义
Hook,中文译为“挂钩”或“钩子”。要“钩”到什么呢?在对特定的系统事件进行hook后,一旦发生已hook事件,对该事件进行hook的程序就能在第一时间对该事件做出响应,甚至可以截断此事件。
本文,侧重于Java层的hook。
2.如何Hook?
Hook其实很简单,总体概括,分为三步:文章来源:https://www.toymoban.com/news/detail-415965.html
- 釜底抽薪
分析需求,看源码,找到hook的点。具体就是,分析您的研发需求,转换为具体的实际代码中,想要hook住哪个函数或者变量就可以达到效果?这个需求去根据需求去落实,找到代码。 - 代拆代行
通过静态代理 or 动态代理
,去构造想要替换的函数或者变量。对于接口来说,当然自己使用动态代理,构造相应对象。对于具体类来说,可以通过静态代理,去构造相应对象。 - 偷梁换柱
使用我们创建的代理方法或者属性,通过反射
的相关方法,替换系统的相关属性和方法。
从上面看到,想要理解 or 实现 hook,那就绕不过去两个概念,一个反射,一个代理,大家需要去认真需求一下,可以看小编的另外一篇文章。
好了简单先说了方法,接下来,我们结合实践,去看一下,如何应用上面三步骤去实现真正的hook。文章来源地址https://www.toymoban.com/news/detail-415965.html
2.1 hook onClick
到了这里,关于Android Hook的探索与实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!