Skip to content

类增强与 Hook

Rain 的增强层由 classloaderhook 两个模块组成。

AppClassloader

AppClassloader 在定义应用类前读取字节码,并依次调用已注册的 ClassTransformer。Transformer 返回发生变更后,增强后的类由应用类加载器定义。

黑名单中的 JDK、Kotlin、ASM、日志和测试框架包默认交给父类加载器;应用可以注册额外的黑白名单类或包。

Transformer

kotlin
appClassloader.registerTransformer(MyTransformer())
appClassloader.registerBlackPackage("com.example.library")

完整启动器已经注册 Rain 自身需要的增强与 Hook Transformer。

方法 Hook

Hook 运行器可参与三个阶段:

  • preRun:方法调用前,可修改参数或取消执行。
  • postRun:方法成功返回后,可修改结果。
  • onError:方法抛出异常后,可处理或替换异常。

Hook 支持静态与实例方法。由于它依赖自定义类加载器,应尽早通过 FullStackApplicationLauncher 启动,不要提前由系统类加载器加载待增强业务类。

基于 Apache License 2.0 发布