YukiHookAPI Versions Save

⛱️ An efficient Hook API and Xposed Module solution built in Kotlin.

1.2.0

7 months ago

YukiHookAPI 1.2.0 Released

⚠ BREAKING CHANGES

  • The license agreement has been changed from MIT to Apache-2.0, subsequent versions will be distributed under this license agreement, you should change the relevant license agreement after using this version
  • This is a breaking update, please refer to Migrate to YukiHookAPI 1.2.x for details
  • Adapted to Android 14, thanks to BlueCat300 for PR
  • Fixed findAllInterfaces related issues, thanks to buffcow for PR
  • Fixed the delayed callback problem in the Hook process, thanks to cesaryuan for his Issue
  • Added support for Resources Hook related functions, please refer to this Issue for details
  • Added YukiHookAPI.TAG
  • Deprecated YukiHookAPI.API_VERSION_NAME, YukiHookAPI.API_VERSION_CODE, merged into YukiHookAPI.VERSION
  • Added YukiHookAPI.TAG
  • Deprecated YukiHookAPI.API_VERSION_NAME, YukiHookAPI.API_VERSION_CODE, merged into YukiHookAPI.VERSION
  • Deprecated useDangerousOperation method in YukiMemberHookCreator
  • Deprecated instanceClass function in YukiMemberHookCreator, it is no longer recommended
  • Modify instanceClass in HookParam to be a null safe return value type
  • Detach all Hook objects created using injectMember to LegacyCreator
  • Modify appClassLoader in PackageParam to be a null safe return value type
  • Refactor all logger... methods to new usage YLog
  • Removed the --> style behind the print log function
  • Fixed and improved the problem that the module package name cannot be obtained through KSP after using namespace
  • Functions such as whether to enable module activation status have now been moved to the InjectYukiHookWithXposed annotation
  • Detached FreeReflection will no longer be automatically generated and will be automatically imported as a dependency
  • Added a warning log that will be automatically printed when the same Hook method is repeated
  • The findClass(...) method in PackageParam is obsolete, please migrate to the "...".toClass() method
  • The String.hook { ... } method in PackageParam is obsolete, and it is recommended to use a new method for Hook
  • AppLifecycle can now be created repeatedly in different Hookers
  • The old version of Hook priority writing is obsolete and migrated to YukiHookPriority
  • Removed the tag function in the Hook process
  • Refactored remendy functionality in find methods, which now prints exceptions in steps
  • The multi-method find result type is changed from HashSet to MutableList
  • Added method(), constructor(), field() to directly obtain all object functions in the class
  • constructor() no longer behaves like constructor { emptyParam() }
  • Added lazyClass and lazyClassOrNull methods to lazily load Class

For more details, please check the changelog.


YukiHookAPI 1.2.0 已发布

⚠ 重大更新

  • 许可协议由 MIT 变更为 Apache-2.0,在此之后的版本将由此许可协议进行分发,您在使用此版本后应变更相关许可协议
  • 这是一次重大更新,详情请参考 迁移到 YukiHookAPI 1.2.x
  • 适配 Android 14,感谢 BlueCat300PR
  • 修复 findAllInterfaces 相关问题,感谢 buffcowPR
  • 修复 Hook 过程中的延迟回调问题,感谢 cesaryuanIssue
  • 新增 Resources Hook 相关功能支持,详情请参考这个 Issue
  • 新增 YukiHookAPI.TAG
  • 作废了 YukiHookAPI.API_VERSION_NAMEYukiHookAPI.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() }
  • 新增 lazyClasslazyClassOrNull 方法,可延迟装载 Class

详情请查看更新日志

1.1.11

1 year ago

YukiHookAPI 1.1.11 Released

!!!This version fixes a serious BUG, recommend everyone to update!!!

  • Fixed a critical issue since 1.1.5 version where the Member cache did not take effect and persistent storage eventually caused app out of memory (OOM), thanks to @Art-Chen
  • Remove the direct cache function of Member and deprecated YukiReflection.Configs.isEnableMemberCache, keep the cache function of Class
  • Modified finder to Sequence, optimize the finding speed and performance of Member
  • Remove the YukiHookPrefsBridge's direct key-value cache function and removed LruCache related functions
  • Deprecated YukiHookAPI.Configs.isEnablePrefsBridgeCache
  • Deprecated direct, clearCache functions in YukiHookPrefsBridge

For more details, please check the changelog.


YukiHookAPI 1.1.11 已发布

!!!这个版本修复了一个严重 BUG,推荐所有人更新!!!

  • 修复从 1.1.5 版本开始的一个严重问题,Member 缓存未生效且持续存储最终引发 APP 内存溢出 (OOM),感谢 @Art-Chen
  • 移除 Member 的直接缓存功能并作废 YukiHookAPI.Configs.isEnableMemberCache,保留 Class 的缓存功能
  • 对接查找功能到 Sequence,优化 Member 的查找速度与性能
  • 移除 YukiHookPrefsBridge 的直接键值缓存功能并移除 LruCache 相关功能
  • 作废了 YukiHookAPI.Configs.isEnablePrefsBridgeCache
  • 作废了 YukiHookPrefsBridge 中的 directclearCache 方法

详情请查看更新日志

1.1.10

1 year ago

YukiHookAPI 1.1.10 Released

  • The Activity proxy function adds the function of specifying a separate proxy Activity for each proxied Activity
  • Fixed problem that the contains and all methods in YukiHookPrefsBridge did not judge the native function
  • Integrate the cache function in YukiHookPrefsBridge into PreferencesCacheManager and use LruCache as a key-value pair cache
  • Modify YukiHookPrefsBridge key-value pair caching function to take effect in all environments (Module Apps, Host Apps)
  • Modify part of HashMap used for caching to ArrayMap to reduce memory consumption
  • Fix some other possible problems

For more details, please check the changelog.


YukiHookAPI 1.1.10 已发布

  • Activity 代理功能新增每个被代理的 Activity 指定单独的代理 Activity 功能
  • 修复 YukiHookPrefsBridge 中的 containsall 方法未判断 native 功能的问题
  • 整合 YukiHookPrefsBridge 中的缓存功能到 PreferencesCacheManager 并使用 LruCache 作为键值对前置缓存
  • 修改 YukiHookPrefsBridge 键值对缓存功能在所有环境中生效 (模块、宿主)
  • 修改部分用于缓存的 HashMapArrayMap 以减少内存消耗
  • 修复一些其它可能出现的问题

详情请查看更新日志

1.1.9

1 year ago

YukiHookAPI 1.1.9 Released

  • Change the type of dependent library from Java Library (jar) to Android Library (aar)
  • Remove the inspection function of internal methods and parameters through Hook or reflection API
  • Fixed the problem that YukiHookDataChannel automatically segmented data sending function could not work normally (exception would still be thrown)
  • Added the ability to manually modify the maximum data byte size allowed by YukiHookDataChannel to be sent at one time according to the limitations of the target device
  • Remove the restriction that YukiHookDataChannel can only be used in module Activity, now you can use it anywhere
  • Modify and standardize the broadcast Action name used by YukiHookDataChannel
  • Fix the problem that BadParcelableException occurs when YukiHookDataChannel has different modules with the same host
  • Added ExecutorType, you can get the type of known Hook Framework through YukiHookAPI.Status.Executor.type
  • YukiHookModulePrefs renamed to YukiHookPrefsBridge
  • Modify YukiHookPrefsBridge to be implemented as a non-singleton, as a singleton may cause data confusion
  • Deprecated Context.modulePrefs(...) method, please move to Context.prefs(...)
  • YukiHookPrefsBridge adds native method, which supports storing private data in modules and hosts directly as native storage
  • Integrate the storage method in YukiHookPrefsBridge to YukiHookPrefsBridge.Editor, please use edit method to store data
  • YukiHookPrefsBridge adds contains method
  • Cache dynamically created proxy objects in YukiHookPrefsBridge, try to fix problems that may cause OOM in the host and modules
  • Modify the proxy class of the Activity proxy function to be dynamically generated to prevent conflicts caused by injecting different modules into the host
  • Fixed some other possible problems

For more details, please check the changelog.


YukiHookAPI 1.1.9 已发布

  • 将依赖库的类型由 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

1 year ago

YukiHookAPI 1.1.8 Released

  • Fixed the problem that the underlying Hook method cannot update the modified state synchronously when modifying parameters such as result during callback, thanks to #23
  • Move the entry class name file automatically generated by YukiHookAPI from assets/yukihookapi_init to resources/META-INF/yukihookapi_init
  • When only printing the exception stack, the msg parameter is allowed to be empty and the msg parameter can not be set, and the log with the msg parameter left blank will not be logged unless the exception stack is not empty
  • Fixed the bug that the log printed by the exception that occurs in the body of the Hook callback method has no specific method information
  • HookParam adds instanceOrNull variable and method, which can be used on the premise that the Hook instance is not sure whether it is empty to prevent the Hook instance from being empty and throw an exception
  • Decoupled all hookers in Member lookup functionality to MemberBaseFinder.MemberHookerManager
  • Modified the usage of by condition in YukiMemberHookCreator, now you can reuse by method to set multiple conditions
  • Removed wrong Class object declaration in Android type
  • The registerReceiver method in PackageParam.AppLifecycle adds the function of directly using IntentFilter to create a system broadcast listener
  • Fixed the problem that there may be multiple registration lifecycles in PackageParam.AppLifecycle
  • Revert: The 1.1.7 version has been withdrawn due to a serious problem, please update to this version directly (the update log is the same as version 1.1.7)

For more details, please check the changelog.


YukiHookAPI 1.1.8 已发布

  • 修复底层 Hook 方法在回调时修改 result 等参数时时不能同步更新修改后的状态问题,感谢 #23
  • 移动 YukiHookAPI 自动生成的入口类名称文件 assets/yukihookapi_initresources/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

1 year ago

YukiHookAPI 1.1.6 Released

  • Fixed the serious problem that ClassLoader does not match after PackageParam keeps a single instance when there may be multiple package names in the same process when Xposed Module is loaded
  • When the package name is not distinguished when there are multiple package names in the same process, stop loading the singleton child Hooker and print a warning message
  • Fixed the problem that the number of parameters is incorrect when methods such as HookParam.callOriginal, HookParam.invokeOriginal call the original method
  • Modify the method parameter name param of reflection calls in MethodFinder, ConstructorFinder, ReflectionFactory to args
  • Added the function of judging the parameters of the entry class constructor in the automatic processing program of the Xposed Module, the entry class needs to ensure that it does not have any constructor parameters

For more details, please check the changelog.


YukiHookAPI 1.1.6 已发布

  • 修复 Xposed 模块装载时可能存在同一个进程多个包名的情况导致 PackageParam 保持单例后 ClassLoader 不符的严重问题
  • 新增同一个进程多个包名的情况下未区分包名时,停止装载单例化的子 Hooker 并打印警告信息
  • 修复 HookParam.callOriginalHookParam.invokeOriginal 等方法调用原始方法时参数个数不正确的问题
  • 修改 MethodFinderConstructorFinderReflectionFactory 中反射调用的方法参数名 paramargs
  • 新增 Xposed 模块自动处理程序中判断入口类构造方法参数功能,入口类需要保证其不存在任何构造方法参数

详情请查看更新日志

1.1.5

1 year ago

YukiHookAPI 1.1.5 Released

Happy New Year 2023!

This update has changed a lot, please check the changelog for details.

Subsequent version updates will be released simultaneously on Github Release.


YukiHookAPI 1.1.5 已发布

2023 新年快乐!

本次更新改动比较大,详情请查看更新日志

后续版本的更新将同步发布在 Github Release。