From 9b6f108c22d6dc6ff0114dde38e221d924a7711a Mon Sep 17 00:00:00 2001 From: Fankesyooni Date: Mon, 14 Feb 2022 12:09:55 +0800 Subject: [PATCH] Update README.md --- README.md | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/README.md b/README.md index 6ae1a4c3..fef8bc65 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,70 @@ | [TaiChi](https://github.com/taichi-framework/TaiChi) | ⭕ | 可以作为模块使用 | | [Xposed](https://github.com/rovo89/Xposed) | ❎ | 未测试,不再推荐使用 | +# Advantage + +以前,我们在构建 Xposed 模块的时候,首先需要在 `assets` 下创建 `xposed_init` 文件。

+然后,将自己的入口类名手动填入文件中,使用 `XposedHelper` 去实现我们的 Hook 逻辑。 + +- 示例如下 + +```kotlin +class MainHook : IXposedHookLoadPackage { + + override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { + if (lpparam.packageName == "com.android.browser") + XposedHelpers.findAndHookMethod( + Activity::class.java.name, + lpparam.classLoader, + "onCreate", + Bundle::class.java, + object : XC_MethodHook() { + override fun beforeHookedMethod(param: MethodHookParam?) { + // Your code here. + } + + override fun afterHookedMethod(param: MethodHookParam?) { + // Your code here. + } + }) + } +} +``` + +自 `Kotlin` 作为 Android 主要开发语言以来,这套 API 用起来确实已经不是很优雅了。

+有没有什么 好用、轻量、优雅 的解决办法呢?

+本着这样的想法,于是 `YukiHookAPI` 就这样诞生了,我们只需要编写少量的代码,一切时间开销和花费交给自动化处理。 + +- 示例如下 + +```kotlin +@InjectYukiHookWithXposed +class MainHook : YukiHookXposedInitProxy { + + override fun onHook() = encase { + loadApp(name = "com.android.browser") { + ActivityClass.hook { + injectMember { + method { + name = "onCreate" + param(BundleClass) + } + beforeHook { + // Your code here. + } + afterHook { + // Your code here. + } + } + } + } + } +} +``` + +你没有看错,仅仅就需要这几行代码,就一切安排妥当。

+代码量少,逻辑清晰,借助高效强大的 `YukiHookAPI`,你就可以实现一个非常简单的 Xposed 模块。 + # Get Started - 你可以点击[快速开始](https://github.com/fankes/YukiHookAPI/wiki#%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B),集成 `YukiHookAPI` 并开始使用。