YukiHookAPI: [BUG] HookParam call timing problem

复现步骤:

  1. 创建模块,代码如下,启用模块
loadApp(name = "com.wibo.bigbang.ocr") {
  findClass(name = "okhttp3.Request\$Builder").hook {
      injectMember {
          method {
              name = "addHeader"
              param(StringClass,StringClass)
              returnType = "okhttp3.Request\$Builder"
          }
          beforeHook {
              val a1 = args().first().string();
              loggerD("checkEqual", "", LoggerType.LOGD)
              val a2 = args().first().string();
              loggerD(
                  tag = "checkEqual",
                  msg = "${a1 == a2} $a1 $a2"
              )
          }
      }
  }
}
  1. 安装宿主app:布丁扫描,启动宿主APP

  2. 观察Logcat,发现有好几次输出了false,按理来说应该始终是true才对 image

  3. 把a1后面的loggerD("checkEqual", "", LoggerType.LOGD)删掉后,程序运行正常(始终输出true image

About this issue

  • Original URL
  • State: closed
  • Created 10 months ago
  • Comments: 20

Most upvoted comments

1.2.0 版本已发布,该问题已被修复。

我差点忘了,这个类一直有历史遗留问题,这个位置是故意放外面的,当时这么改的原因就是为了确定唯一的 HookParam 对象,为了使用 extraData,但是没想到遇到了你这个问题。

还有就是因为 HookParam 重复创建会导致 hook ClassLoader 卡死 #14,所以后面就改成这样了,没事,这些东西大部分是我在 coding 很烂的时候写的,新的 API 将会重写这个类 #33,后面先会发小版本 1.2.0 修复一下这个错误和其它问题。