Hook技术

2019-10-17  本文已影响0人  Kevin_Lv

参考:https://www.jianshu.com/p/74c12164ffca?tdsourcetag=s_pcqq_aiomsg

1、hook的定义

hook,钩子。勾住系统的程序逻辑。
在某段SDK源码逻辑执行的过程中,通过代码手段拦截执行该逻辑,加入自己的代码逻辑。

2、使用价值

hook是中级开发通往高级开发的必经之路。
如果把谷歌比喻成 安卓的造物主,那么安卓SDK源码里面就包含了万事万物的本源。
中级开发者,只在利用万事万物,浮于表层,而高级开发者能从本源上去改变万事万物,深入核心。
hook是安卓面向切面(AOP)编程的基础,可以让我们在不变更原有业务的前提下,插入额外的逻辑.
这样,既保护了原有业务的完整性,又能让额外的代码逻辑不与原有业务产生耦合.

3、前置技能

4、hook通用思路

  1. 根据需求确定 要hook的对象
  2. 寻找要hook的对象的持有者,拿到要hook的对象
    (持有:B类 的成员变量里有 一个是A的对象,那么B就是A的持有者,如下)
    class B{
    A a;
    }
    class A{}
  3. 定义“要hook的对象”的代理类,并且创建该类的对象
  4. 使用上一步创建出来的对象,替换掉要hook的对象
上一篇下一篇

猜你喜欢

热点阅读