基于NWear-QQ最终版2(这个版本的qq是爅峫手改smali实现,所以无法开源)
☆☆地表最强表Q改版 震撼推出☆☆
@Mixin
class ExampleHook : TargetClass() { ... }
会将ExampleHook类内所有override的方法的方法体替换到hook的TargetClass内,使用super.fun(...)可以调用类内原有的方法
你可以在src内的其他任意地方把任意TargetClass对象强转为ExampleHook并调用ExampleHook类内定义的其他方法或是字段。非override的方法和字段会被复制进hook后的TargetClass内。但是要注意目前不支持构造函数Hook,这意味着添加字段不能有初始值
我不建议在Hook类内添加过多的东西,建议仅添加必要的代码。
静态方法Hook使用:
@Mixin
object ExampleStatic : TargetClass() {
@StaticHook
@JvmStatic
fun targetMethod_(...) {...}
}
要点:定义为object类,方法带上JvmStatic注解,方法名后添加一个下划线(否则重复声明无法通过编译)
- 自己看commit历史