⛱️ An efficient Hook API and Xposed Module solution built in Kotlin.
APACHE-2.0 License
Bot releases are visible (Hide)
For more details, please check the changelog.
详情请查看更新日志。
Published by fankes about 1 year ago
MIT
to Apache-2.0
, subsequent versions will be distributed under this license agreement, you should change the relevant license agreement after using this versionfindAllInterfaces
related issues, thanks to @buffcow for PR
YukiHookAPI.TAG
YukiHookAPI.API_VERSION_NAME
YukiHookAPI.API_VERSION_CODE
YukiHookAPI.VERSION
YukiHookAPI.TAG
YYukiHookAPI.API_VERSION_NAME
YukiHookAPI.API_VERSION_CODE
YukiHookAPI.VERSION
useDangerousOperation
method in YukiMemberHookCreator
instanceClass
function in YukiMemberHookCreator
is obsolete and is no longer recommendedinstanceClass
in HookParam
to be a null safe return value typeinjectMember
to LegacyCreator
appClassLoader
in PackageParam
to be a null safe return value typelogger...
methods to new usage YLog
-->
style behind the print log functionnamespace
InjectYukiHookWithXposed
annotationfindClass(...)
method in PackageParam
is obsolete, please migrate to the "...".toClass()
methodString.hook { ... }
method in PackageParam
is obsolete, and it is recommended to use a new method for HookAppLifecycle
can now be created repeatedly in different HookersYukiHookPriority
tag
function in the Hook processremendy
functionality in find methods, which now prints exceptions in stepsHashSet
to MutableList
method()
, constructor()
, field()
to directly obtain all object functions in the classconstructor()
no longer behaves like constructor { emptyParam() }
lazyClass
and lazyClassOrNull
methods to lazily load Class
For more details, please check the changelog.
MIT
变更为 Apache-2.0
,在此之后的版本将由此许可协议进行分发,您在使用此版本后应变更相关许可协议findAllInterfaces
相关问题,感谢 @buffcow 的 PR
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
注解中PackageParam
中的 findClass(...)
方法,请迁移到 "...".toClass()
方法PackageParam
中的 String.hook { ... }
方法,推荐使用新方式进行 HookAppLifecycle
现在可以在不同 Hooker 中重复创建YukiHookPriority
tag
功能remendy
功能,现在可以对其进行分步打印异常HashSet
改为 MutableList
method()
、constructor()
、field()
可直接获取到类中的所有对象功能constructor()
的行为不再是 constructor { emptyParam() }
lazyClass
、lazyClassOrNull
方法,可延迟装载 Class
详情请查看更新日志。
Published by fankes over 1 year ago
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-ChenMember
and deprecated YukiReflection.Configs.isEnableMemberCache
Class
Sequence
, optimize the finding speed and performance of Member
YukiHookPrefsBridge
's direct key-value cache function and removed LruCache
related functionsYukiHookAPI.Configs.isEnablePrefsBridgeCache
direct
clearCache
YukiHookPrefsBridge
For more details, please check the changelog.
1.1.5
版本开始的一个严重问题,Member
缓存未生效且持续存储最终引发 APP 内存溢出 (OOM),感谢 @Art-ChenMember
的直接缓存功能并作废 YukiHookAPI.Configs.isEnableMemberCache
Class
的缓存功能Sequence
,优化 Member
的查找速度与性能YukiHookPrefsBridge
的直接键值缓存功能并移除 LruCache
相关功能YukiHookAPI.Configs.isEnablePrefsBridgeCache
YukiHookPrefsBridge
中的 direct
clearCache
详情请查看更新日志。
Published by fankes over 1 year ago
Activity
proxy function adds the function of specifying a separate proxy Activity
for each proxied Activity
contains
and all
methods in YukiHookPrefsBridge
did not judge the native
functionYukiHookPrefsBridge
into PreferencesCacheManager
and use LruCache
as a key-value pair cacheYukiHookPrefsBridge
key-value pair caching function to take effect in all environments (Module Apps, Host Apps)HashMap
used for caching to ArrayMap
to reduce memory consumptionFor more details, please check the changelog.
Activity
代理功能新增每个被代理的 Activity
指定单独的代理 Activity
功能YukiHookPrefsBridge
中的 contains
、all
方法未判断 native
功能的问题YukiHookPrefsBridge
中的缓存功能到 PreferencesCacheManager
并使用 LruCache
作为键值对前置缓存YukiHookPrefsBridge
键值对缓存功能在所有环境中生效 (模块、宿主)HashMap
到 ArrayMap
以减少内存消耗详情请查看更新日志。
Published by fankes over 1 year ago
YukiHookDataChannel
automatically segmented data sending function could not work normally (exception would still be thrown)YukiHookDataChannel
to be sent at one time according to the limitations of the target deviceYukiHookDataChannel
can only be used in module Activity
, now you can use it anywhereYukiHookDataChannel
BadParcelableException
occurs when YukiHookDataChannel
has different modules with the same hostExecutorType
, you can get the type of known Hook Framework through YukiHookAPI.Status.Executor.type
YukiHookModulePrefs
YukiHookPrefsBridge
YukiHookPrefsBridge
to be implemented as a non-singleton, as a singleton may cause data confusionContext.modulePrefs(...)
Context.prefs(...)
YukiHookPrefsBridge
adds native
method, which supports storing private data in modules and hosts directly as native storageYukiHookPrefsBridge
to YukiHookPrefsBridge.Editor
, please use edit
method to store dataYukiHookPrefsBridge
adds contains
methodYukiHookPrefsBridge
, try to fix problems that may cause OOM in the host and modulesActivity
proxy function to be dynamically generated to prevent conflicts caused by injecting different modules into the hostFor more details, please check the changelog.
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
代理功能的代理类为动态生成,防止不同模块注入宿主后造成冲突详情请查看更新日志。
Published by fankes over 1 year ago
result
during callback, thanks to #23YukiHookAPI
from assets/yukihookapi_init
to resources/META-INF/yukihookapi_init
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 emptyHookParam
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 exceptionMember
lookup functionality to MemberBaseFinder.MemberHookerManager
by
condition in YukiMemberHookCreator
, now you can reuse by
method to set multiple conditionsClass
object declaration in Android type
registerReceiver
method in PackageParam.AppLifecycle
adds the function of directly using IntentFilter
to create a system broadcast listenerPackageParam.AppLifecycle
For more details, please check the changelog.
result
等参数时时不能同步更新修改后的状态问题,感谢 #23YukiHookAPI
自动生成的入口类名称文件 assets/yukihookapi_init
到 resources/META-INF/yukihookapi_init
msg
参数为空并可以不设置 msg
参数,留空 msg
参数的日志除非异常堆栈不为空否则将不会被记录HookParam
新增 instanceOrNull
变量与方法,可以在不确定 Hook 实例是否为空的前提下使用以防止 Hook 实例为空抛出异常Member
查找功能中的 Hooker 到 MemberBaseFinder.MemberHookerManager
YukiMemberHookCreator
中的 by
条件用法,现在可以重复使用 by
方法设置多个条件type
中的错误 Class
对象声明PackageParam.AppLifecycle
中的 registerReceiver
方法新增直接使用 IntentFilter
创建系统广播监听的功能PackageParam.AppLifecycle
中可能存在多次注册生命周期的问题详情请查看更新日志。
Published by fankes over 1 year ago
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 loadedHookParam.callOriginal
, HookParam.invokeOriginal
call the original methodparam
of reflection calls in MethodFinder
, ConstructorFinder
, ReflectionFactory
to args
For more details, please check the changelog.
PackageParam
保持单例后 ClassLoader
不符的严重问题HookParam.callOriginal
、HookParam.invokeOriginal
等方法调用原始方法时参数个数不正确的问题MethodFinder
、ConstructorFinder
、ReflectionFactory
中反射调用的方法参数名 param
为 args
详情请查看更新日志。
Published by fankes almost 2 years ago