更新日志
这里记录了
YukiHookAPI
的版本更新历史。
特别注意
我们只会对最新的 API 版本进行维护,若你正在使用过时的 API 版本则代表你自愿放弃一切维护的可能性。
最新
1.2.1 | 2024.06.20- 捕获单例 Hooker 中的异常,防止其阻断整个进程
- 在自动处理程序中添加自动使用 "`" 来修复 Kotlin 关键字为包名的情况,感谢 Fengning Zhu 的 PR
- 适配 Kotlin 2.0.0+,修复在自动处理过程中无法通过编译的问题,感谢 xihan123 的 PR
过旧
1.2.0 | 2023.10.07- 许可协议由
MIT
变更为Apache-2.0
,在此之后的版本将由此许可协议进行分发,您在使用此版本后应变更相关许可协议 - 这是一次重大更新,详情请参考 迁移到 YukiHookAPI 1.2.x
- 适配 Android 14,感谢 BlueCat300 的 PR
- 修复
findAllInterfaces
相关问题,感谢 buffcow 的 PR - 修复 Hook 过程中的延迟回调问题,感谢 cesaryuan 的 Issue
- 新增 Resources Hook 相关功能支持,详情请参考这个 Issue
- 新增
YukiHookAPI.TAG
- 作废了
、YukiHookAPI.API_VERSION_NAME
,统一合并到YukiHookAPI.API_VERSION_CODE
YukiHookAPI.VERSION
- 作废了
中的YukiMemberHookCreator
方法useDangerousOperation
- 作废了
中的YukiMemberHookCreator
功能,不再推荐使用instanceClass
- 修改
HookParam
中的instanceClass
为空安全返回值类型 - 分离全部使用
injectMember
创建的 Hook 对象到LegacyCreator
- 修改
PackageParam
中的appClassLoader
为空安全返回值类型 - 重构全部
logger...
方法到新用法YLog
- 移除了打印日志功能后方的
-->
样式 - 修复并改进在使用
namespace
后通过 KSP 无法获取模块包名的问题 - 是否启用模块激活状态等功能现已移动到
InjectYukiHookWithXposed
注解中 - 分离 FreeReflection 不再自动生成,将作为依赖自动导入
- 新增重复 Hook 同一个方法时将自动打印警告日志
- 作废了
PackageParam
中的findClass(...)
方法,请迁移到"...".toClass()
方法 - 作废了
PackageParam
中的String.hook { ... }
方法,推荐使用新方式进行 Hook AppLifecycle
现在可以在不同 Hooker 中重复创建- 作废了旧版 Hook 优先级写法,统一迁移到
YukiHookPriority
- 移除了 Hook 过程中的
tag
功能 - 重构方法查找中的
remendy
功能,现在可以对其进行分步打印异常 - 多重方法查找结果类型由
HashSet
改为MutableList
- 新增使用
method()
、constructor()
、field()
可直接获取到类中的所有对象功能 constructor()
的行为不再是constructor { emptyParam() }
- 新增
lazyClass
、lazyClassOrNull
方法,可延迟装载Class
过旧
1.1.11 | 2023.04.25- 修复从
1.1.5
版本开始的一个严重问题,Member
缓存未生效且持续存储最终引发 APP 内存溢出 (OOM),感谢 Art-Chen - 移除
Member
的直接缓存功能并作废,保留YukiHookAPI.Configs.isEnableMemberCache
Class
的缓存功能 - 对接查找功能到
Sequence
,优化Member
的查找速度与性能 - 移除
YukiHookPrefsBridge
的直接键值缓存功能并移除LruCache
相关功能 - 作废了
YukiHookAPI.Configs.isEnablePrefsBridgeCache
- 作废了
YukiHookPrefsBridge
中的、direct
方法clearCache
过旧
1.1.10 | 2023.04.21Activity
代理功能新增每个被代理的Activity
指定单独的代理Activity
功能- 修复
YukiHookPrefsBridge
中的contains
、all
方法未判断native
功能的问题 - 整合
YukiHookPrefsBridge
中的缓存功能到PreferencesCacheManager
并使用LruCache
作为键值对前置缓存 - 修改
YukiHookPrefsBridge
键值对缓存功能在所有环境中生效 (模块、宿主) - 修改部分用于缓存的
HashMap
到ArrayMap
以减少内存消耗 - 修复一些其它可能出现的问题
过旧
1.1.9 | 2023.04.17- 将依赖库的类型由 Java Library (jar) 修改为 Android Library (aar)
- 移除通过 Hook 或反射 API 内部方法、参数的检查功能
- 修复
YukiHookDataChannel
自动分段发送数据功能不能正常生效 (依然会抛出异常) 的问题 - 新增可以手动根据目标设备的限制修改
YukiHookDataChannel
允许一次发送的最大数据字节大小 - 移除
YukiHookDataChannel
只能在模块Activity
中使用的限制,现在你可以在任何地方使用它 - 修改并规范
YukiHookDataChannel
使用的广播 Action 名称 - 修复
YukiHookDataChannel
在不同模块同一宿主的情况下出现BadParcelableException
异常的问题 - 新增
ExecutorType
,可以通过YukiHookAPI.Status.Executor.type
来获取已知 Hook Framework 的类型 更名为YukiHookModulePrefs
YukiHookPrefsBridge
- 修改
YukiHookPrefsBridge
为非单例实现,作为单例可能发生数据混淆的问题 - 作废了
方法,请迁移到Context.modulePrefs(...)
Context.prefs(...)
YukiHookPrefsBridge
新增native
方法,支持直接作为原生存储在模块和宿主中存储私有数据- 整合
YukiHookPrefsBridge
中的存储方法到YukiHookPrefsBridge.Editor
,请使用edit
方法来存储数据 YukiHookPrefsBridge
新增contains
方法- 缓存
YukiHookPrefsBridge
中动态创建的代理对象,尝试修复可能会导致宿主、模块出现 OOM 的问题 - 修改
Activity
代理功能的代理类为动态生成,防止不同模块注入宿主后造成冲突 - 修复一些其它可能出现的问题
过旧
1.1.8 | 2023.02.01- 修复底层 Hook 方法在回调时修改
result
等参数时时不能同步更新修改后的状态问题,感谢 Yongzheng Lai 的 Issue - 移动
YukiHookAPI
自动生成的入口类名称文件assets/yukihookapi_init
到resources/META-INF/yukihookapi_init
- 允许在仅打印异常堆栈时
msg
参数为空并可以不设置msg
参数,留空msg
参数的日志除非异常堆栈不为空否则将不会被记录 - 修复 Hook 回调方法体内发生的异常打印的日志无具体方法信息的 BUG
HookParam
新增instanceOrNull
变量与方法,可以在不确定 Hook 实例是否为空的前提下使用以防止 Hook 实例为空抛出异常- 解耦合所有
Member
查找功能中的 Hooker 到MemberBaseFinder.MemberHookerManager
- 修改了
YukiMemberHookCreator
中的by
条件用法,现在可以重复使用by
方法设置多个条件 - 移除了 Android
type
中的错误Class
对象声明 PackageParam.AppLifecycle
中的registerReceiver
方法新增直接使用IntentFilter
创建系统广播监听的功能- 修复在
PackageParam.AppLifecycle
中可能存在多次注册生命周期的问题 - Revert: 1.1.7 版本由于有一个严重问题已经撤回,请直接更新到此版本即可 (更新日志同 1.1.7 版本)
过旧
1.1.6 | 2023.01.21- 修复 Xposed 模块装载时可能存在同一个进程多个包名的情况导致
PackageParam
保持单例后ClassLoader
不符的严重问题 - 新增同一个进程多个包名的情况下未区分包名时,停止装载单例化的子 Hooker 并打印警告信息
- 修复
HookParam.callOriginal
、HookParam.invokeOriginal
等方法调用原始方法时参数个数不正确的问题 - 修改
MethodFinder
、ConstructorFinder
、ReflectionFactory
中反射调用的方法参数名param
为args
- 新增 Xposed 模块自动处理程序中判断入口类构造方法参数功能,入口类需要保证其不存在任何构造方法参数
过旧
1.1.5 | 2023.01.13- 规范并优化整体代码风格
- 对部分内部调用的 API 进行了私有化处理
- 底层 API 接口整体解耦合,为兼容更多 Hook Framework 做准备
- 将部分集成于 API 中的功能移动到
ksp-xposed
依赖 (解耦合),单独引入api
依赖将不再包含第三方库等功能的引用 - 文档 快速开始 页面加入
YukiHookAPI.Configs.isDebug
何时需要关闭的说明 - 规范类型定义中的 Java 原始类型 (Primitive Type) 并同步更新到文档
- Java
type
新增NumberClass
类型 - 改进了 (Xposed) 宿主环境的识别能力
- 接管了 Xposed 模块装载后的全部异常,若发生异常将会自动拦截并打印错误日志
- 修改类型定义中较低 Android 系统版本 (Android 5.0) 中不存在的
Class
为空安全类型 - 适配并支持原生 Xposed,最低推荐版本为 Android 7.0
- Hook 入口类新增支持声明为
object
类型 (单例) - 修复 Android 8 以下系统不支持
Executable
类型导致 Hook 失效的问题 - 修复 Android 9 以下系统在使用
Activity
代理功能时报错问题并限制此功能最低支持版本为 Android 7.0 - 新增禁止资源注入与
Activity
代理功能注入当前模块自身实例进程,防止发生问题 - 修复一个 Hook 过程中方法返回值的对象是目标的继承类和接口时被识别为返回值不符的严重错误
- 修复在当前 Hook 的实例对象是静态的情况下调用
HookParam.callOriginal
、HookParam.invokeOriginal
出现对象为空问题 - 优化对太极激活方法相关判断功能以及同步更新文档相关说明
- 作废了
、YukiHookAPI.Status.executorName
,请迁移到YukiHookAPI.Status.executorVersion
YukiHookAPI.Status.Executor
- 适配了一些第三方 Hook Framework 的
YukiHookAPI.Status.Executor.name
名称显示功能 - 新增
Class.extends
、Class.implements
等方法,可更加方便地判断当前Class
的继承与接口关系 - 新增
Class.toClass
、Class.toClassOrNull
等相关方法的同名泛型方法,可使用泛型来约束已知Class
的实例对象类型 - 修改
classOf<T>
方法的返回值为泛型T
,以约束已知Class
的实例对象类型 - 新增
Class
相关扩展方法的initialize
参数,可控制在得到Class
对象时是否同时初始化其静态方法块 - 变量、方法、构造方法查找功能中新增
param { ... }
、type { ... }
等用法,可对查找的对象增加更加具体的条件判断 PackageParam
的loadApp
方法新增isExcludeSelf
参数,可用于排除 Hook 相关功能注入模块自身实例进程PackageParam
的onAppLifecycle
方法新增isOnFailureThrowToApp
参数,可将生命周期方法体内发生的异常直接抛给宿主- 修改
PackageParam
中的appClassLoader
为可修改变量,可在 Hook 过程中动态设置宿主使用的ClassLoader
HookParam
中新增dataExtra
功能,可用于临时存储 Hook 方法体中的数据- 作废
YukiHookModulePrefs
中的、isRunInNewXShareMode
,统一合并到isXSharePrefsReadable
isPreferencesAvailable
Class.allFields
、Class.allMethods
等相关方法新增isAccessible
参数,可控制成员对象何时可被设置为可访问类型- 修复
YukiHookDataChannel
存在多个宿主时在一个Activity
中接收相同键值数据时仅会回调最后一个方法体的问题 YukiHookDataChannel
的wait
等相关方法中新增priority
参数,可传入ChannelPriority
来自定义回调数据结果的条件YukiHookDataChannel
新增发送数据时自动使用ChannelDataWrapper
类型包装功能,提升使用体验并增强数据保护YukiHookDataChannel
新增限制一次性发送数据的最大字节大小功能,防止数据过大造成 APP 崩溃YukiHookDataChannel
新增发送数据过大时自动分段发送功能,仅支持List
、Map
、Set
、String
类型YukiHookLogger
新增contents
方法与saveToFile
的data
参数,可传入自定义的调试日志数据进行格式化或保存到文件- 修复
YukiHookLogger
处理后的调试日志数据包名可能在 (Xposed) 宿主环境不正确的问题 - 修复 Xposed 模块装载资源钩子 (Resources Hook) 事件时在部分系统上 (部分系统 APP 中) 包名可能不正确的问题
过旧
1.1.4 | 2022.10.04- 修复
YukiHookDataChannel
可能不能响应系统框架中响应广播事件的问题,在 Android 13 中复现 - 修复
YukiHookDataChannel
长达多个版本在 (Xposed) 宿主环境无法与模块通讯的问题 YukiHookDataChannel
中新增obtainLoggerInMemoryData
方法,可在模块与宿主之间共享调试日志数据- 修改
YukiHookLogger.inMemoryData
的类型为ArrayList
并修改YukiLoggerData
为data class
- 修复
YukiLoggerData
在模块中包名为空打印空白的问题 PackageParam
中新增loadApp
、loadZygote
、loadSystem
、withProcess
的同名多参数方法- 修复了一些可能存在的 BUG
过旧
1.1.3 | 2022.09.30- 修复一个无法自定义 Hook 入口类名的致命错误
- 添加
LoggerFactory
中的部分代码注释文案并更新特色功能文档
过期
1.1.2 | 2022.09.30- 文档 基础知识 页面新增 English 版本友情链接
- 修复
YukiBaseHooker
注释中的 English 文档链接错误问题 - 修复
ModuleClassLoader
中的ClassCastException
问题 - 修正并规范部分代码注释
- 新增
ModuleClassLoader
排除列表功能,可使用excludeHostClasses
和excludeModuleClasses
方法来自定义排除列表 - 新增
YukiLoggerData
实时日志数据类,可实时通过YukiHookLogger.inMemoryData
获取日志数组 - 新增
ClassLoader.listOfClasses
方法,可直接获取当前Dex
中的全部Class
过期
1.1.1 | 2022.09.28- 修复了文档 基础知识 页面友情链接错误的问题
- 修复了文档
favicon
不显示的问题 - 修复
DexClassFinder
查找条件中的 BUG
过期
1.1.0 | 2022.09.28- 这是一次大版本更新,有关更新日志中提到的变化及用法请参考 API 文档 以及 特色功能
- 更换帮助文档框架到 VuePress
- 统一并规范文档中的术语名词,例如“查询”一律更改为了“查找”,
XposedHelper
拼写错误修改为了XposedHelpers
- 文档 基础知识 页面加入友情链接,仅限简体中文
- 将 Hook App Demo 的
Class
与Method
转为 Java 以提供更好的演示效果 - 修正了 Hook Module Demo 中的代码注释命名
- 重构了大量底层 Hook 逻辑及 Xposed API 的对接方式
- 移除了
HookParamWrapper
,现已将其直接与YukiBridgeFactory
对接 - 移动部分
YukiHookBridge
中的方法到AppParasitics
- 移除了
HookParam.args
与底层的直接对接方法setArgs
,直接获取并设置当前数组的对象 - 优化自动处理程序,将引用的
jar
合并到stub
项目 - 修复多项目打包时模块包名无法正确匹配的问题以及修改自动处理程序的模块包名匹配逻辑,感谢 5ec1cff 的反馈及提供的解决方案
- 对 API 私有工具类的方法进行了 internal 闭包处理,避免污染顶级命名空间
- 修正了所有反射和 Hook 类的
Creater
命名到Creator
- 新增
YukiHookAPI.Status.compiledTimestamp
功能,可以在作为 Xposed 模块使用时获取编译完成的时间戳 - 新增
YukiHookAPI.Status.isXposedEnvironment
功能,可以判断当前为 (Xposed) 宿主环境还是模块环境 - 调试日志功能进行了大改版,现已将
YukiHookAPI.Configs.debugTag
等功能合并到YukiHookLogger.Configs
中 - 调试日志新增可指定打印使用的方法为
XposedBridge.log
或Logd
- 调试日志中默认加入当前宿主的包名以及当前用户 ID,以供调试,你可以在
debugLog
配置中自行更改 - 新增
generic
功能,可对泛型进行反射和调用,你可以在Class
或CurrentClass
中使用它 - 作废
buildOfAny
方法,现在请直接使用buildOf
方法 (不带泛型) 来使用构造方法创建新对象并得到结果Any
- 修复
hasExtends
使用过程发生空指针异常的问题 CurrentClass
新增非 lambda 方式的调用方法CurrentClass
新增name
与simpleName
功能- 完全重写
ReflectionTool
的核心方法,将不同的查找条件进行了整理分类 - 修复
ReflectionTool
中可能的直接调用declared
获取的Member
抛出异常的问题 - 修复
ReflectionTool
中UndefinedType
未在Method
与Constructor
条件中正确判断的问题 - 新增反射查找结果发生异常时的友好提示方式,可具体定位到指定条件找不到
Member
的问题 - 反射查找
Method
、Constructor
中新增VagueType
条件,可使用在param
条件中用于忽略你不想填写的参数 - 反射查找
Method
、Constructor
中新增paramCount { ... }
条件,现在你可以直接拿到其中的it
来自定义你的判断条件 FieldFinder
结果中新增current
方法,可直接对结果实例创建调用空间- 修改了反射查找功能中的
modifiers
条件以及name
条件,现在你需要对此方法体结尾返回一个Boolean
以使条件成立 ModifierRules
中的as*
功能改名为is*
,感谢 Kitsune 的建议FieldFinder
中新增RemedyPlan
功能- 新增
Dex
中的Class
模糊查找功能 (Beta),你现在可以直接使用searchClass
功能来使用指定条件模糊查找Class
- 新增反射查找中的多重查找功能,可使用相对查找条件同时获取多个查找结果,感谢 AA 以及 Kitsune 的建议
- 修复
appClassLoader
获取到的对象在某些系统中的系统应用中不正确的问题,感谢 Luckyzyx 的反馈 - 修改了
XposedBridge.invokeOriginalMethod
的调用方式并在MethodFinder.Result.Instance
中增加original
功能 - 修复
YukiHookModulePrefs
中getStringSet
方法取值错误的问题并优化代码风格,感谢 Teddy_Zhu 的 PR - 修改
YukiHookModulePrefs
,拦截XSharePreference
可能不存在的异常 - 修复
YukiHookDataChannel
在某些第三方 ROM 系统框架中无法注册成功的问题 - 安全化
YukiHookDataChannel
,现在它只能在来自指定包名的模块与宿主之间通信 - 新增自动 Hook
SharedPreferences
以修复部分系统中文件权限不是0664
的问题,感谢 5ec1cff 的反馈及提供的实现代码 - 新增
YukiHookAPI.Configs.isEnableHookSharedPreferences
功能,默认关闭,若SharedPreferences
的权限错误可进行启用 - 修复查找
Constructor
时无参构造方法在不填写查找条件时无法找到的 BUG,感谢 B5 KAKA 的反馈 - 分离位于
injectMember
中method
、constructor
的Result
实例到Process
- 在 Hook 过程中新增
useDangerousOperation
方法,未进行声明时在 Hook 危险列表中的功能后会自动停止 Hook 并打印错误 - 新增模块资源注入与
Activity
代理功能,你可以调用injectModuleAppResources
及registerModuleAppActivities
来使用 - 新增
ModuleContextThemeWrapper
功能,你可以调用applyModuleTheme
在任意Activity
中创建模块的Context
- 新增
ClassLoader.onLoadClass
功能,可用于监听ClassLoader
的loadClass
方法被调用的事件 - 作废了
classOf
与clazz
扩展方法,新增toClass
以及toClassOrNull
用法,请现在迁移到新的方法 VariousClass
新增getOrNull
方法,可在匹配不到Class
的时候不抛出异常而是返回null
PackageParam.hook
中移除了isUseAppClassLoader
参数,修改为isForceUseAbsolute
并自动匹配目标Class
PackageParam
新增systemContext
功能,你可以在任意时间调用此功能获取一个持久化的Context
- 不再对外开放
HookClass
中的任何方法 HookParam
中新增throwToApp
功能,可将异常直接抛给宿主- Hook 回调中新增
onFailureThrowToApp
功能,可在发生异常时直接抛给宿主 - 修改了调试日志的打印逻辑,反射查找功能中的耗时记录仅会在 Hook 过程中进行打印
- Hook 过程中新增解除 Hook 功能,可使用
remove
及removeSelf
方法解除 Hook - 修复在 ReplaceHook 失败的时候导致宿主抛出异常的问题,现修改为调用原始方法保证宿主功能正常运行
- 新增 Hook 过程中对方法返回值的检查功能,在返回值不匹配的情况下会根据情景自动抛出异常或打印错误
- Resources Hook 中新增
array
类型,感谢 GSWXXN 的 PR - 移动
me.weishu.reflection
到thirdparty
防止同时引入的同名依赖冲突 - 移除 Hook 方法体为空时抛出的异常,修改为打印警告日志
- 修改
AppLifecycle
的异常处理逻辑,当其发生异常时直接抛给宿主 - 更新 Demo 的 API 版本到 33
过期
1.0.92 | 2022.05.31- 修正了大量方法中 callback 的命名方法
- 更换方案再次修复
YukiHookDataChannel
在低于 Android 12 的设备上不能回调当前Activity
广播的问题 InjectYukiHookWithXposed
注解新增isUsingResourcesHook
功能,现在你可以选择性关闭自动生成IXposedHookInitPackageResources
的依赖接口了
过期
1.0.91 | 2022.05.29- 修复部分设备的定制系统在 LSPosed 环境下开机启动获取的
ClassLoader
错误的问题,感谢 Luckyzyx 的反馈 - 修复
YukiHookDataChannel
在 ZUI 以及低于 Android 12 的系统上不能回调当前Activity
广播的问题 - 整合
YukiHookModuleStatus
功能到YukiHookAPI.Status
,重写了大量方法,现在你可以在模块与宿主中双向判断模块激活等状态信息
过期
1.0.90 | 2022.05.27- 修复
YukiHookDataChannel
在模块设置监听回调时闪退的问题 - 修复
YukiHookDataChannel
在非当前Activity
情况下依然会回调的问题 - 移除
YukiHookDataChannel
回调事件的默认值,没有即不回调 - 移除
YukiHookModulePrefs
在 XShare 不可读的情况下打印的警告 - 新增
YukiHookModulePrefs
中的isXSharePrefsReadable
方法,可判断当前的 XShare 是否可用
过期
1.0.89 | 2022.05.26- 修复
YukiHookDataChannel
不能重复设置监听的问题,并加入在模块不同Activity
中重复响应和自动跟随Activity
销毁监听功能 - 新增
YukiHookDataChannel
重复监听用例说明文档 - 加入
onAlreadyHooked
方法,可判断当前方法是否被重复 Hook - 修改部分重复添加 HashMap 的逻辑,移除
putIfAbsent
方法,允许覆盖添加 - 修复了几处可能的 BUG
过期
1.0.88 | 2022.05.25- 对 Xposed API 完全解耦合
- 增加了
type
中的android
类型 - 将
YukiHookModuleStatus
从自动生成代码中分离,并加入isEnableHookModuleStatus
的开关,由你决定是否启用 - 对 API 大量类的构造方法进行了 internal 闭包处理
- 将
YukiHookModulePrefs
设置为单例运行,防止重复创建浪费系统资源 - 修复自
1.0.80
版本后无法嵌套 Hook 的 BUG,并优化嵌套 Hook 相关功能 - 修改 Hooker 存储方案由 HashSet 到 HashMap,防止重复添加 Hooker 的问题
- 修改 Hook 核心实现方法,加入查重,避免重复 Hook 多次回调
HookParam
方法 MethodFinder
与FieldFinder
加入查找模糊方法、变量名称功能,可调用name { ... }
来设置查找条件,支持正则- 优化并修改
appContext
的获取方式,降低会取到空的问题的可能性 - 修改自动生成的代码中
logger
的打印TAG
默认为你自定义的名称,方便进行调试 - 优化
YukiHookBridge
的Hooker
实现方式,提升 Hook 性能 PackageParam
增加onAppLifecycle
方法,可原生监听宿主的生命周期以及实现注册系统广播功能- 新增
YukiHookDataChannel
功能,可在模块与宿主保持存活的情况下使用系统无序广播进行通讯 YukiHookDataChannel
增加checkingVersionEquals
方法,可通过监听来验证模块更新后宿主并未更新版本不匹配问题demo-module
的示例代码中新增 Java 版本的示例,仅供参考
过期
1.0.87 | 2022.05.10- 新增
refreshModuleAppResources
功能,以适配语言区域、字体大小、分辨率改变等情况下的 Resources 刷新 - 新增
isEnableModuleAppResourcesCache
功能,可自行设置是否自动缓存当前模块的 Resources
过期
1.0.86 | 2022.05.06- 修复不支持 Resources Hook(资源钩子) 的情况下在
initZygote
时持续报错的问题,复现在 ZUI/LSPosed CI(1.8.3-6550) - 优化并对 Resources Hook 进行异常处理,只有被使用后不支持才会打印错误和警告
过期
1.0.85 | 2022.05.04- 修复无法 Hook 系统框架的严重问题,从
1.0.80
开始出现 - 调试日志中新增区分
initZygote
装载的包名为android-zygote
,packageName
保持android
不变
过期
1.0.83 | 2022.05.04- 修复
YukiHookModuleStatus
在loadSystem
后大量报错的问题 - 新增
type
中的android
类型 - 更新帮助文档的示例说明
过期
1.0.82 | 2022.05.04- 修复了一处概念混淆错误,区分
initZygote
与系统框架的关系,之前的注释和文档有问题,非常抱歉 PackageParam
新增loadSystem
方法,不需要再写loadApp(name = "android")
即可 Hook 系统框架
过期
1.0.81 | 2022.05.04- 修复使用
by
方法设置条件后 Hook 方法体内查找不到的方法、构造方法依然输出错误日志的问题 - 在执行 Hook 过程中加入全局日志显示当前 Hook APP 的包名,并修复一处错误日志打印样式的问题
过期
1.0.80 | 2022.05.01InjectYukiHookWithXposed
注解新增entryClassName
功能,可自定义生成的xposed_init
入口类名更名为YukiHookXposedInitProxy
IYukiHookXposedInit
,原接口名称已作废,将在后续版本中直接被删除- 新增
initZygote
与 Resources Hook 功能,支持 Hook Layout - 新增
onXposedEvent
方法,可监听原生 Xposed API 的全部事件 - 对 Hook 功能的 lambda 进行
inline
处理,避免生成过碎的匿名类,提升编译后的运行性能 - 修复
PrefsData
编译后的方法体复制过大的问题 - 增加
XSharePreference
可读性测试,失败后会自动打印警告日志 PackageParam
新增appResources
、moduleAppResources
、moduleAppFilePath
功能PackageParam
的loadApp
新增不写name
功能,默认筛选全部 APPPackageParam
新增loadZygote
方法,可直接 Hook 系统框架PackageParam
新增resources().hook
功能- 优化方法、构造方法、变量查找功能,找不到的错误日志将优先显示已设置的查找条件
- 增加
hasExtends
扩展方法,可判断当前Class
是否有继承关系 - 增加
isSupportResourcesHook
功能,判断当前是否支持资源钩子(Resources Hook) current
功能新增superClass
方法调用父类- 查找方法、构造方法、变量新增
superClass
查找条件,可继续在父类中查找 YukiHookAPI
大量方法与 Xposed API 解耦合- 新增 Xposed API 的原生 Hook 优先级功能
- 修复
isFirstApplication
可能判断不准确的问题 - 屏蔽 MIUI 系统上 MiuiCatcherPatch 重复调用 Hook 入口方法的问题
- 优化 Hook 入口调用方法,避免因为 Hook Framework 问题导致多次调用
- 修复 Hook
ClassLoader
导致 Hook 卡死的问题,感谢 WankkoRee 的反馈 - 提升
XC_Callback
接口对接后的性能 - Java
type
新增ClassLoader
类型 - 优化 API 帮助文档,修复可能持续缓存页面的问题
过期
1.0.78 | 2022.04.18YukiHookModulePrefs
新增isRunInNewXShareMode
方法,可用于判断模块当前是否处于New XSharePreference
模式- 修复
YukiHookModulePrefs
在New XSharePreference
模式下工作的部分问题 - 新增
ModulePreferenceFragment
,现在,你可以完全替换掉PreferenceFragmentCompat
并开始使用新的功能 - 适配
PreferenceFragmentCompat
的 Sp 数据存储解决方案,感谢 mahoshojoHCG 的反馈 - 更新自动处理程序以及 Kotlin 依赖到最新版本
- 修正部分文档和代码注释中的错误
过期
1.0.77 | 2022.04.15YukiHookModulePrefs
新增clear
方法,感谢 WankkoRee 的建议YukiHookModulePrefs
新增getStringSet
、putStringSet
、all
方法HookParam
的args
增加any
方法- 新增
ModuleApplication
,可在模块中继承此类实现更多功能 - 对接全部的
findClass
功能到 Xposed API,在非宿主环境继续使用原生ClassLoader
- 修复了一些可能存在的 BUG
过期
1.0.75 | 2022.04.13- 更正了自动处理程序的逻辑识别部分,感谢 ApeaSuperz 的贡献
- 修正一处文档注释的引用未更改的问题
HookParam
中删除了firstArgs
与lastArgs
方法,现在你可以使用args().first()
与args().last()
来取代它HookParam
中删除了args()
中的默认参数index = 0
,现在你可以使用args().first()
或args(index = 0)
来取代它HookParam
中result
功能增加了泛型匹配,现在你可以使用result<T>
来匹配你的目标方法已知返回值类型了- 方法、构造方法查找功能新增
emptyParam
条件,并完善了文档相关需要注意的查找条件误区 - 增加了
type
中的android
类型
1.0.73 | 2022.04.10
- 修正几处文档的中文翻译错误,感谢 WankkoRee 的贡献
- 修复在某些情况下
XC_LoadPackage.LoadPackageParam
内容为空抛出异常的问题,感谢 Luckyzyx 的反馈 - 修复一些已知的 BUG,提升 Hook 稳定性
过期
1.0.72 | 2022.04.09- 更新 API 文档到新的地址
PackageParam
中加入appContext
功能- 修复一些已知的 BUG,提升 Hook 稳定性
过期
1.0.71 | 2022.04.04- 修复 VariousClass 无法匹配时会停止 Hook 抛出异常的严重问题
过期
1.0.70 | 2022.04.04- 修复
instanceClass
在静态实例中调用后报错问题 - 在 Hook 过程中加入
isUseAppClassLoader
功能,感谢 WankkoRee 的反馈 - 加入
withProcess
功能,可根据 APP 当前指定进程进行 Hook - 修复查找方法、构造类和变量的严重逻辑错误问题
- 修复 Hook 目标类不存在的时候无法忽略异常输出的问题
- 修复部分情况下 APP 启动方法装载过快导致 Hook 不能生效的问题
- 修复
allMethods
未 Hook 到方法时不会抛出异常的问题,感谢 WankkoRee 的反馈 - 加入 Hook 状态监听功能,感谢 WankkoRee 的建议
- 修改 Xposed 入口注入类的方式,重新声明 API 的定义域
- 加入混淆的方法以及变量的查找功能,可使用不同类型筛选
index
定位指定的方法和变量,感谢 WankkoRee 提供的思路 - 查找方法、变量时允许传入多种类型,例如
String
声明的类名和VariousClass
- 加入全新的
current
功能,可对任意的类构建一个反射方法操作空间,方便地调用和修改其中的方法和变量 - 修复了 Hook 过程中的大量 BUG,感谢 WankkoRee 对此项目所做出的贡献
过期
1.0.69 | 2022.03.30- 添加并改进一些方法功能的注释
- 增加 Demo 中的更多示例 Hook 内容
- 修复在一个 Hook 实例中,
allMethods
多次使用时只有最后一个生效的问题,感谢 WankkoRee 的反馈
过期
1.0.68 | 2022.03.29- 增加 Demo 中的新用例和 LSPosed 作用域
- 增加
Member
查找缓存和查找缓存配置开关 - 移除和修改
MethodFinder
、FieldFinder
以及HookParam
相关方法的调用 - 增加更多
Finder
中的cast
类型并支持cast
为数组 - 整体的性能和稳定性提升
- 修复上一个版本可能存在的 BUG
过期
1.0.67 | 2022.03.27- 增加三个
Finder
中的modifiers
功能,可筛选static
、native
、public
、abstract
等诸多描述类型 - 增加方法和构造方法查找时可模糊方法参数类型为指定个数进行查找
- 增加
Member
的hasModifiers
扩展功能 - 增加
MethodFinder
和ConstructorFinder
中的give
方法,可获得原始类型 - 增加
YukiHookModulePrefs
中的PrefsData
模板功能 - 彻底对方法、构造方法及变量的查找方案进行重构
- 优化代码注释,修复了可能产生的 BUG
过期
1.0.66 | 2022.03.25- 修复
MethodFinder
中的一个严重问题 - 增加
hookParam
中的args
调用方法 - 修复其它可能存在的问题以及修复部分类的注释问题
过期
1.0.65 | 2022.03.25- 重新发布版本修复 Maven 仓库因为缓存问题新版本不正确的情况
- 增加
MethodFinder
与FieldFinder
新的返回值调用方法 - 修复可能存在的问题,并修复太极使用过程中可能存在的问题
- 修复自动生成 Xposed 入口类可能发生的问题
- 增加了
type
中的android
类型以及 Java 类型
过期
1.0.6 | 2022.03.20- 修复
YukiHookModulePrefs
在使用一次direct
忽略缓存后每次都忽略的 BUG - 增加新的 API,作废了
isActive
判断模块激活的传统用法 - 修复非 Xposed 环境使用 API 时打印调试日志的问题
- 修复查找
Field
时的日志输出问题和未拦截的异常问题 - 解耦合
ReflectionUtils
中的 Xposed API - 增加
YukiHookModuleStatus
方法名称的混淆,以精简模块生成的体积 - 装载模块自身 Hook 时将不再打印欢迎信息
- 修复上一个版本仍然存在的某些 BUG
过期
1.0.55 | 2022.03.18- 修正一处注释错误
- 临时修复一个 BUG
- 增加了
type
中的大量android
类型以及少量 Java 类型 - 修复新版与旧版 Kotlin APIs 的兼容性问题
过期
1.0.5 | 2022.03.18- 修复旧版本 LSPosed 框架情况下欢迎信息多次打印的问题
- 添加
onInit
方法来配置YukiHookAPI
- 新增
executorName
和executorVersion
来获取当前 Hook Framework 的名称和版本号 - 新增
by
方法来设置 Hook 的时机和条件 YukiHookModulePrefs
新增可控制的键值缓存,可在宿主运行时模块动态更新数据- 修复了一些可能存在的 BUG
过期
1.0.4 | 2022.03.06- 修复 LSPosed 在最新版本中启用“只有模块classloader可以使用Xposed API”选项后找不到
XposedBridge
的问题 - 添加
YukiHookAPI
的常量版本名称和版本号 - 新增
hasField
方法以及isAllowPrintingLogs
配置参数 - 新增
isDebug
开启的情况下 API 将自动打印欢迎信息测试模块是否生效
过期
1.0.3 | 2022.03.02- 修复一个潜在性的异常未拦截 BUG
- 增加
ignoredError
功能 - 增加了
type
中的android
类型 - 增加监听
hook
后的ClassNotFound
功能
过期
1.0.2 | 2022.02.18- 修复 Windows 下无法找到项目路径的问题
- 移除部分反射 API,合并至
BaseFinder
进行整合 - 增加直接使用字符串创建 Hook 的方法
过期
1.0.1 | 2022.02.15RemedyPlan
增加onFind
功能- 整合并修改了部分反射 API 代码
- 增加了
type
中的 Java 类型 - 修复忽略错误在控制台仍然输出的问题
过期
1.0 | 2022.02.14- 首个版本提交至 Maven