mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 09:45:19 +08:00
docs: add milestone related plans & modify some documents
This commit is contained in:
@@ -19,28 +19,11 @@
|
||||
|
||||
前身为 [开发学习项目](https://github.com/fankes/TMore) 中使用的 Innocent Xposed API,现在重新命名并开源。
|
||||
|
||||
## 支持的功能
|
||||
|
||||
> 基本功能
|
||||
|
||||
- [x] Hook Framework 支持的基本 ART 动态方法 Hook 功能
|
||||
- [x] Xposed 资源钩子 (Resources Hook) **(计划 2.x.x 版本作废)**
|
||||
|
||||
> Hook Frameworks API
|
||||
|
||||
- [x] [Rovo89 Xposed API](https://api.xposed.info)
|
||||
- [ ] [Modern Xposed API](https://github.com/libxposed) **(计划 2.x.x 版本支持)**
|
||||
|
||||
## 扩展功能
|
||||
|
||||
- [x] 自动化 Xposed 模块构建 (完全无需自行创建 `assets/xposed_init`)
|
||||
- [x] [New XSharedPreferences](https://github.com/LSPosed/LSPosed/wiki/New-XSharedPreferences#for-the-module)
|
||||
- [x] DataChannel (宿主 ←→ 模块)
|
||||
- [x] 混淆的字节码查找 & 反射 (由 [YukiReflection](https://github.com/fankes/YukiReflection) 提供支持)
|
||||
|
||||
## 开始使用
|
||||
|
||||
- [点击这里](https://fankes.github.io/YukiHookAPI/zh-cn/) 前往文档页面查看更多详细教程和内容。
|
||||
[点击这里](https://fankes.github.io/YukiHookAPI/zh-cn/) 前往文档页面查看更多详细教程和内容。
|
||||
|
||||
有关支持性的相关信息,你可以直接 [点击这里](https://fankes.github.io/YukiHookAPI/zh-cn/guide/supportive) 进行查看。
|
||||
|
||||
## 合作项目
|
||||
|
||||
|
21
README.md
21
README.md
@@ -20,29 +20,12 @@ The name is taken from ["ももくり" heroine Yuki Kurihara](https://www.bilibi
|
||||
|
||||
Formerly the Innocent Xposed API used in [Development Learning Project](https://github.com/fankes/TMore), now renamed and open sourced.
|
||||
|
||||
## Supports
|
||||
|
||||
> Basic Functions
|
||||
|
||||
- [x] Basic ART dynamic method hook functions supported by Hook Framework
|
||||
- [x] Xposed Resources Hook **(Will be deprecated on 2.x.x)**
|
||||
|
||||
> Hook Frameworks API
|
||||
|
||||
- [x] [Rovo89 Xposed API](https://api.xposed.info)
|
||||
- [ ] [Modern Xposed API](https://github.com/libxposed) **(Will be supported on 2.x.x)**
|
||||
|
||||
## Extensions
|
||||
|
||||
- [x] Automatic Xposed Module Build (No need to create `assets/xposed_init` by yourself)
|
||||
- [x] [New XSharedPreferences](https://github.com/LSPosed/LSPosed/wiki/New-XSharedPreferences#for-the-module)
|
||||
- [x] DataChannel (Host ←→ Module)
|
||||
- [x] Obfuscated Bytecode Finding & Reflection by [YukiReflection](https://github.com/fankes/YukiReflection)
|
||||
|
||||
## Get Started
|
||||
|
||||
[Click here](https://fankes.github.io/YukiHookAPI/en/) go to the documentation page for more detailed tutorials and content.
|
||||
|
||||
For supportive related information, you can check it directly [click here](https://fankes.github.io/YukiHookAPI/en/guide/supportive).
|
||||
|
||||
## Cooperations
|
||||
|
||||
The following are projects that have collaborated and are using `YukiHookAPI`.
|
||||
|
@@ -5,6 +5,7 @@ const baseApiPath = '/api/public/com/highcapable/yukihookapi/';
|
||||
const navigationLinks = {
|
||||
start: [
|
||||
'/guide/home',
|
||||
'/guide/supportive',
|
||||
'/guide/knowledge',
|
||||
'/guide/quick-start',
|
||||
'/guide/example',
|
||||
@@ -127,10 +128,11 @@ export const navBarItems = {
|
||||
text: 'Get Started',
|
||||
children: [
|
||||
{ text: 'Introduce', link: i18n.string(navigationLinks.start[0], 'en') },
|
||||
{ text: 'Basic Knowledge', link: i18n.string(navigationLinks.start[1], 'en') },
|
||||
{ text: 'Quick Start', link: i18n.string(navigationLinks.start[2], 'en') },
|
||||
{ text: 'Usage Example', link: i18n.string(navigationLinks.start[3], 'en') },
|
||||
{ text: 'Migrate from Xposed API', link: i18n.string(navigationLinks.start[4], 'en') }
|
||||
{ text: 'Supportive', link: i18n.string(navigationLinks.start[1], 'en') },
|
||||
{ text: 'Basic Knowledge', link: i18n.string(navigationLinks.start[2], 'en') },
|
||||
{ text: 'Quick Start', link: i18n.string(navigationLinks.start[3], 'en') },
|
||||
{ text: 'Usage Example', link: i18n.string(navigationLinks.start[4], 'en') },
|
||||
{ text: 'Migrate from Other Hook APIs', link: i18n.string(navigationLinks.start[5], 'en') }
|
||||
]
|
||||
}, {
|
||||
text: 'Configs',
|
||||
@@ -176,10 +178,11 @@ export const navBarItems = {
|
||||
text: '入门',
|
||||
children: [
|
||||
{ text: '介绍', link: i18n.string(navigationLinks.start[0], 'zh-cn') },
|
||||
{ text: '基础知识', link: i18n.string(navigationLinks.start[1], 'zh-cn') },
|
||||
{ text: '快速开始', link: i18n.string(navigationLinks.start[2], 'zh-cn') },
|
||||
{ text: '用法示例', link: i18n.string(navigationLinks.start[3], 'zh-cn') },
|
||||
{ text: '从 Xposed API 迁移', link: i18n.string(navigationLinks.start[4], 'zh-cn') }
|
||||
{ text: '支持性', link: i18n.string(navigationLinks.start[1], 'zh-cn') },
|
||||
{ text: '基础知识', link: i18n.string(navigationLinks.start[2], 'zh-cn') },
|
||||
{ text: '快速开始', link: i18n.string(navigationLinks.start[3], 'zh-cn') },
|
||||
{ text: '用法示例', link: i18n.string(navigationLinks.start[4], 'zh-cn') },
|
||||
{ text: '从其它 Hook API 迁移', link: i18n.string(navigationLinks.start[5], 'zh-cn') }
|
||||
]
|
||||
}, {
|
||||
text: '配置',
|
||||
|
@@ -2,7 +2,7 @@
|
||||
|
||||
> `YukiHookAPI` encapsulates a set of reflection API with near-zero reflection writing for developers, which can almost completely replace the usage of reflection API in Java.
|
||||
|
||||
The core part of this functionality has been decoupled into the [YukiReflection](https://github.com/fankes/YukiReflection) project, which can be used independently in any Android project.
|
||||
The core part of this functionality has been decoupled into the [YukiReflection](https://github.com/fankes/YukiReflection) project, which can be used independently in any Java or Android project.
|
||||
|
||||
Now `YukiReflection` is integrated into `YukiHookAPI` as a core dependency.
|
||||
|
||||
@@ -151,6 +151,14 @@ Please note that the more the same type **Class** is matched, the slower the spe
|
||||
|
||||
:::
|
||||
|
||||
::: danger
|
||||
|
||||
After **YukiHookAPI** 2.x.x released, this function will be deprecated and will no longer be migrated to [YukiReflection](https://github.com/fankes/YukiReflection).
|
||||
|
||||
We welcome all developers to start using [DexKit](https://github.com/LuckyPray/DexKit), which is a igh-performance runtime parsing library for **Dex** implemented in C++, which is more efficient than the Java layer in terms of performance, efficient and excellent, it is still in the development stage, your valuable suggestions are welcome.
|
||||
|
||||
:::
|
||||
|
||||
#### Get Started
|
||||
|
||||
Below is a simple usage example.
|
||||
|
@@ -105,7 +105,7 @@ object HookEntry : IYukiHookXposedInit {
|
||||
```
|
||||
|
||||
:::
|
||||
::: code-group-item Xposed API
|
||||
::: code-group-item Rovo89 Xposed API
|
||||
|
||||
```kotlin
|
||||
class HookEntry : IXposedHookZygoteInit, IXposedHookLoadPackage, IXposedHookInitPackageResources {
|
||||
@@ -163,24 +163,6 @@ class HookEntry : IXposedHookZygoteInit, IXposedHookLoadPackage, IXposedHookInit
|
||||
:::
|
||||
::::
|
||||
|
||||
Yes, you read that right, just needing these codes can completely replace the Xposed API to achieve the same function.
|
||||
Yes, you read that right, just needing these codes can completely replace the traditional Xposed API to achieve the same function.
|
||||
|
||||
Now, with the help of the efficient and powerful `YukiHookAPI`, you can implement a very simple Xposed Module.
|
||||
|
||||
## Suppored Hook Framework
|
||||
|
||||
The following are the `Hook Framework` and Xposed framework supported by `YukiHookAPI`.
|
||||
|
||||
| Hook Framework | ST | Description |
|
||||
| --------------------------------------------------------- | --- | ----------------------------------------------------------------------------------------- |
|
||||
| [LSPosed](https://github.com/LSPosed/LSPosed) | ✅ | Stable use in multiple scenarios |
|
||||
| [LSPatch](https://github.com/LSPosed/LSPatch) | ⭕ | WIP after this project is improved |
|
||||
| [EdXposed](https://github.com/ElderDrivers/EdXposed) | ❎ | Maintenance has stopped, no longer recommended |
|
||||
| [Pine](https://github.com/canyie/pine) | ⭕ | Only available |
|
||||
| [SandHook](https://github.com/asLody/SandHook) | ⭕ | Only available |
|
||||
| [Whale](https://github.com/asLody/whale) | ⭕ | Need [xposed-hook-based-on-whale](https://github.com/WindySha/xposed-hook-based-on-whale) |
|
||||
| [YAHFA](https://github.com/PAGalaxyLab/YAHFA) | ❗ | Need to implement the Xposed API yourself |
|
||||
| [FastHook](https://github.com/turing-technician/FastHook) | ❗ | Need to implement the Xposed API yourself |
|
||||
| [Epic](https://github.com/tiann/epic) | ❗ | Need [Dexposed](https://github.com/alibaba/dexposed) by yourself |
|
||||
| [TaiChi](https://github.com/taichi-framework/TaiChi) | ⭕ | Only available for Xposed Module |
|
||||
| [Xposed](https://github.com/rovo89/Xposed) | ⭕ | Recommended minimum system version is Android 7.0 |
|
@@ -1,8 +1,12 @@
|
||||
# Migrate from Xposed API
|
||||
# Migrate from Other Hook APIs
|
||||
|
||||
> If you are familiar with Xposed API, you can refer to the same point below to quickly migrate your API to `YukiHookAPI`.
|
||||
This document can help you quickly migrate from the Hook APIs you are familiar with to `YukiHookAPI` to become familiar with the related writing methods of `YukiHookAPI`.
|
||||
|
||||
## Migrate Hook Entry Point
|
||||
## Rovo89 Xposed API
|
||||
|
||||
> If you are familiar with [Rovo89 Xposed API](https://api.xposed.info/), you can refer to the same point below to quickly migrate your API to `YukiHookAPI`.
|
||||
|
||||
### Migrate Hook Entry Point
|
||||
|
||||
> Migrated from `XC_LoadPackage.LoadPackageParam` to `PackageParam`.
|
||||
|
||||
@@ -52,7 +56,7 @@ override fun onHook() = encase {
|
||||
```
|
||||
|
||||
:::
|
||||
::: code-group-item Xposed API
|
||||
::: code-group-item Rovo89 Xposed API
|
||||
|
||||
```kotlin
|
||||
private lateinit var moduleResources: XModuleResources
|
||||
@@ -67,7 +71,7 @@ override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
|
||||
// Get the ApplicationInfo of the current Hook
|
||||
lpparam.applicationInfo
|
||||
// Get the system context object
|
||||
// There is no ready-made calling method in the native Xposed API, you need to reflect ActivityThread to achieve it
|
||||
// There is no ready-made calling method in the Rovo89 Xposed API, you need to reflect ActivityThread to achieve it
|
||||
// Get the host Application lifecycle
|
||||
AndroidAppHelper.currentApplication()
|
||||
// Class Hook
|
||||
@@ -97,11 +101,11 @@ override fun handleInitPackageResources(resparam: XC_InitPackageResources.InitPa
|
||||
:::
|
||||
::::
|
||||
|
||||
## Migrate Hook Method Body
|
||||
### Migrate Hook Method Body
|
||||
|
||||
> Migrated from `XC_MethodHook.MethodHookParam` to `HookParam`.
|
||||
|
||||
### Before/After Hook
|
||||
#### Before/After Hook
|
||||
|
||||
`YukiHookAPI` also implements the `lambda` method body `this` usage for `HookParam`, and the `HookParam` object can be obtained globally in the method bodies such as `beforeHook` and `afterHook`.
|
||||
|
||||
@@ -148,7 +152,7 @@ afterHook {
|
||||
```
|
||||
|
||||
:::
|
||||
::: code-group-item Xposed API
|
||||
::: code-group-item Rovo89 Xposed API
|
||||
|
||||
```kotlin
|
||||
override fun afterHookedMethod(param: MethodHookParam) {
|
||||
@@ -188,7 +192,7 @@ override fun afterHookedMethod(param: MethodHookParam) {
|
||||
:::
|
||||
::::
|
||||
|
||||
### Replace Hook
|
||||
#### Replace Hook
|
||||
|
||||
The `replaceHook` method is special, and the `YukiHookAPI` makes a variety of forms for it to choose from.
|
||||
|
||||
@@ -226,7 +230,7 @@ intercept()
|
||||
```
|
||||
|
||||
:::
|
||||
::: code-group-item Xposed API
|
||||
::: code-group-item Rovo89 Xposed API
|
||||
|
||||
```kotlin
|
||||
/// A method with no return value void
|
||||
@@ -258,6 +262,6 @@ override fun replaceHookedMethod(param: MethodHookParam) = null
|
||||
:::
|
||||
::::
|
||||
|
||||
## Migrate Other Features
|
||||
## Migrate More Functions Related to Hook API
|
||||
|
||||
`YukiHookAPI` is a complete rewrite of the Xposed API, you can refer to [API Document](../api/home) and [Special Features](../api/special-features/reflection) to determine some functional Migration and use.
|
||||
`YukiHookAPI` is a brand new Hook API, which is fundamentally different from other Hook APIs, you can refer to [API Document](../api/home) and [Special Features](../api/special-features/reflection) to determine some functional Migration and use.
|
@@ -299,7 +299,7 @@ Then, you can start writing Hook code.
|
||||
|
||||
For configuration details related to use as an Xposed Module, you can [click here](../config/xposed-using) to continue reading.
|
||||
|
||||
If you are currently using Xposed API, you can refer to [Migrate from Xposed API](../guide/move-to-new-api).
|
||||
If you are currently using Hook APIs such as Rovo89 Xposed API, you can refer to [Migrate from Other Hook APIs](../guide/move-to-new-api).
|
||||
|
||||
### Use as Hook API
|
||||
|
||||
@@ -311,7 +311,7 @@ Create your custom `Application`.
|
||||
|
||||
Regardless of the **Hook Framework** you use, you need to add its docking Xposed dependency support.
|
||||
|
||||
If the target **Hook Framework** does not integrate Xposed API, you need to implement and connect **XposedBridge** by yourself.
|
||||
If the target **Hook Framework** does not integrate Rovo89 Xposed API, you need to implement and connect **XposedBridge** by yourself.
|
||||
|
||||
:::
|
||||
|
||||
|
51
docs-source/src/en/guide/supportive.md
Normal file
51
docs-source/src/en/guide/supportive.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# Supportive
|
||||
|
||||
The following are the related functions, Xposed Frameworks, Hook Frameworks and Hook APIs supported by `YukiHookAPI`.
|
||||
|
||||
> Basic Functions
|
||||
|
||||
| Name | ST | Description |
|
||||
| -------------------------- | --- | ---------------------------------------------------------------------------------------------------------------- |
|
||||
| Xposed Module Auto Builder | ✅ | Will use [New Xposed Module Config Plan](https://github.com/fankes/YukiHookAPI/issues/49) on `YukiHookAPI` 2.x.x |
|
||||
| ART Dynamic Method Hook | ✅ | Stable use in multiple scenarios |
|
||||
| Xposed Resources Hook | ❗ | Supported, but will be deprecated on `YukiHookAPI` 2.x.x |
|
||||
|
||||
> Extended Functions
|
||||
|
||||
| Name | ST | Description |
|
||||
| -------------------------------------------------------------------------------------------------- | --- | ---------------------------------------------------------------------------------------------------- |
|
||||
| [Reflection Extensions](../api/special-features/reflection) | ⭕ | Will be merge into [YukiReflection](https://github.com/fankes/YukiReflection) on `YukiHookAPI` 2.x.x |
|
||||
| [Xposed Module Data Storage](../api/special-features/xposed-storage) | ✅ | Normal use |
|
||||
| [Xposed Module and Host Channel](../api/special-features/xposed-channel) | ✅ | Normal use |
|
||||
| [Host Lifecycle Extension](../api/special-features/host-lifecycle) | ✅ | Normal use |
|
||||
| [Inject Module Apps Resources](../api/special-features/host-inject#inject-module-apps-resources) | ✅ | Normal use |
|
||||
| [Register Module Apps Activity](../api/special-features/host-inject#register-module-apps-activity) | ✅ | Normal use |
|
||||
|
||||
> Xposed Frameworks
|
||||
|
||||
| Name | ST | Description |
|
||||
| ---------------------------------------------------- | --- | --------------------------------------------------------------------------- |
|
||||
| [LSPosed](https://github.com/LSPosed/LSPosed) | ✅ | Stable use in multiple scenarios |
|
||||
| [LSPatch](https://github.com/LSPosed/LSPatch) | ⭕ | Support, API support will be gradually added after the project is completed |
|
||||
| [EdXposed](https://github.com/ElderDrivers/EdXposed) | ❎ | Maintenance has stopped and is no longer recommended |
|
||||
| [Dreamland](https://github.com/canyie/Dreamland) | ⭕ | Theoretical support (not tested by developer) |
|
||||
| [TaiChi](https://github.com/taichi-framework/TaiChi) | ⭕ | Hook functions normally (some functions have restrictions) |
|
||||
| [Xposed](https://github.com/rovo89/Xposed) | ❎ | Maintenance has stopped and is no longer recommended |
|
||||
|
||||
> Hook Frameworks
|
||||
|
||||
| Name | ST | Description |
|
||||
| --------------------------------------------------------- | --- | -------------------------------------------------------------------------------------------- |
|
||||
| [Pine](https://github.com/canyie/pine) | ⭕ | Theoretical support (not tested by developer) |
|
||||
| [SandHook](https://github.com/asLody/SandHook) | ❎ | The latests Android are not supported, you need to integrated the Rovo89 Xposed API yourself |
|
||||
| [Whale](https://github.com/asLody/whale) | ❎ | The latests Android are not supported, you need to integrated the Rovo89 Xposed API yourself |
|
||||
| [YAHFA](https://github.com/PAGalaxyLab/YAHFA) | ❎ | The latests Android are not supported, you need to integrated the Rovo89 Xposed API yourself |
|
||||
| [FastHook](https://github.com/turing-technician/FastHook) | ❎ | Maintenance has stopped and is no longer recommended |
|
||||
| [Epic](https://github.com/tiann/epic) | ❎ | Maintenance has stopped and is no longer recommended |
|
||||
|
||||
> Hook APIs
|
||||
|
||||
| Name | ST | Description |
|
||||
| ------------------------------------------------- | --- | ---------------------------------------- |
|
||||
| [Rovo89 Xposed API](https://api.xposed.info/) | ✅ | Stable use in multiple scenarios |
|
||||
| [Modern Xposed API](https://github.com/libxposed) | ❎ | Will be supported on `YukiHookAPI` 2.x.x |
|
@@ -2,7 +2,7 @@
|
||||
|
||||
> `YukiHookAPI` 为开发者封装了一套接近零反射写法的反射 API,它几乎可以完全取代原生 Java 的反射 API 相关用法。
|
||||
|
||||
此功能的核心部分已被解耦合为 [YukiReflection](https://github.com/fankes/YukiReflection) 项目,它可以独立使用于任何 Android 项目中。
|
||||
此功能的核心部分已被解耦合为 [YukiReflection](https://github.com/fankes/YukiReflection) 项目,它可以独立使用于任何 Java、Android 项目中。
|
||||
|
||||
现在 `YukiReflection` 作为核心依赖集成于 `YukiHookAPI`。
|
||||
|
||||
@@ -135,6 +135,14 @@ var isExist = "com.demo.Test".hasClass(customClassLoader)
|
||||
|
||||
:::
|
||||
|
||||
::: danger
|
||||
|
||||
在 **YukiHookAPI** 发布 2.x.x 版本后,此功能将被标记为作废,且不再会迁移到 [YukiReflection](https://github.com/fankes/YukiReflection)。
|
||||
|
||||
我们欢迎各位开发者开始使用 [DexKit](https://github.com/LuckyPray/DexKit),它是一个使用 C++ 实现的 **Dex** 高性能运行时解析库,在性能方面比 Java 层更加高效与优秀,目前尚在开发阶段,欢迎提出宝贵建议。
|
||||
|
||||
:::
|
||||
|
||||
#### 开始使用
|
||||
|
||||
下面是一个简单的用法示例。
|
||||
|
@@ -105,7 +105,7 @@ object HookEntry : IYukiHookXposedInit {
|
||||
```
|
||||
|
||||
:::
|
||||
::: code-group-item Xposed API
|
||||
::: code-group-item Rovo89 Xposed API
|
||||
|
||||
```kotlin
|
||||
class HookEntry : IXposedHookZygoteInit, IXposedHookLoadPackage, IXposedHookInitPackageResources {
|
||||
@@ -163,24 +163,6 @@ class HookEntry : IXposedHookZygoteInit, IXposedHookLoadPackage, IXposedHookInit
|
||||
:::
|
||||
::::
|
||||
|
||||
是的,你没有看错,仅仅就需要这些代码,就能完全取代 Xposed API 实现同样的功能。
|
||||
是的,你没有看错,仅仅就需要这些代码,就能完全取代传统的 Xposed API 实现同样的功能。
|
||||
|
||||
现在,借助高效强大的 `YukiHookAPI`,你就可以实现一个非常简单的 Xposed 模块。
|
||||
|
||||
## 支持的 Hook Framework
|
||||
|
||||
以下是 `YukiHookAPI` 支持的 `Hook Framework` 以及 Xposed 框架。
|
||||
|
||||
| Hook Framework | ST | Description |
|
||||
| --------------------------------------------------------- | --- | ----------------------------------------------------------------------------------------- |
|
||||
| [LSPosed](https://github.com/LSPosed/LSPosed) | ✅ | 多场景下稳定使用 |
|
||||
| [LSPatch](https://github.com/LSPosed/LSPatch) | ⭕ | 将在此项目完善后逐渐加入 API 支持 |
|
||||
| [EdXposed](https://github.com/ElderDrivers/EdXposed) | ❎ | 已停止维护,不再推荐使用 |
|
||||
| [Pine](https://github.com/canyie/pine) | ⭕ | 可以使用 |
|
||||
| [SandHook](https://github.com/asLody/SandHook) | ⭕ | 可以使用 |
|
||||
| [Whale](https://github.com/asLody/whale) | ⭕ | 需要 [xposed-hook-based-on-whale](https://github.com/WindySha/xposed-hook-based-on-whale) |
|
||||
| [YAHFA](https://github.com/PAGalaxyLab/YAHFA) | ❗ | 需要自行实现 Xposed API |
|
||||
| [FastHook](https://github.com/turing-technician/FastHook) | ❗ | 需要自行实现 Xposed API |
|
||||
| [Epic](https://github.com/tiann/epic) | ❗ | 需要自行对接 [Dexposed](https://github.com/alibaba/dexposed) |
|
||||
| [TaiChi](https://github.com/taichi-framework/TaiChi) | ⭕ | 可以作为模块使用 |
|
||||
| [Xposed](https://github.com/rovo89/Xposed) | ⭕ | 建议最低系统版本为 Android 7.0 |
|
@@ -1,8 +1,12 @@
|
||||
# 从 Xposed API 迁移
|
||||
# 从其它 Hook API 迁移
|
||||
|
||||
> 若你熟悉 Xposed API,你可以参考下方的相同点将自己的 API 快速迁移到 `YukiHookAPI`。
|
||||
此文档可以帮助你快速从你熟悉的 Hook API 迁移到 `YukiHookAPI` 来熟悉对 `YukiHookAPI` 的相关写法。
|
||||
|
||||
## 迁移 Hook 入口点
|
||||
## Rovo89 Xposed API
|
||||
|
||||
> 若你熟悉 [Rovo89 Xposed API](https://api.xposed.info/),你可以参考下方的相同点将自己的 API 快速迁移到 `YukiHookAPI`。
|
||||
|
||||
### 迁移 Hook 入口点
|
||||
|
||||
> 从 `XC_LoadPackage.LoadPackageParam` 迁移至 `PackageParam`。
|
||||
|
||||
@@ -52,7 +56,7 @@ override fun onHook() = encase {
|
||||
```
|
||||
|
||||
:::
|
||||
::: code-group-item Xposed API
|
||||
::: code-group-item Rovo89 Xposed API
|
||||
|
||||
```kotlin
|
||||
private lateinit var moduleResources: XModuleResources
|
||||
@@ -67,7 +71,7 @@ override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
|
||||
// 得到当前 Hook 的 ApplicationInfo
|
||||
lpparam.applicationInfo
|
||||
// 得到系统上下文对象
|
||||
// 在原生 Xposed API 中没有现成的调用方法,你需要自行反射 ActivityThread 来实现
|
||||
// 在 Rovo89 Xposed API 中没有现成的调用方法,你需要自行反射 ActivityThread 来实现
|
||||
// 得到宿主 Application 生命周期
|
||||
AndroidAppHelper.currentApplication()
|
||||
// Class Hook
|
||||
@@ -97,11 +101,11 @@ override fun handleInitPackageResources(resparam: XC_InitPackageResources.InitPa
|
||||
:::
|
||||
::::
|
||||
|
||||
## 迁移 Hook 方法体
|
||||
### 迁移 Hook 方法体
|
||||
|
||||
> 从 `XC_MethodHook.MethodHookParam` 迁移至 `HookParam`。
|
||||
|
||||
### Before/After Hook
|
||||
#### Before/After Hook
|
||||
|
||||
`YukiHookAPI` 同样对 `HookParam` 实现了 `lambda` 方法体 `this` 用法,在 `beforeHook`、`afterHook` 等方法体内即可全局得到 `HookParam` 对象。
|
||||
|
||||
@@ -148,7 +152,7 @@ afterHook {
|
||||
```
|
||||
|
||||
:::
|
||||
::: code-group-item Xposed API
|
||||
::: code-group-item Rovo89 Xposed API
|
||||
|
||||
```kotlin
|
||||
override fun afterHookedMethod(param: MethodHookParam) {
|
||||
@@ -188,7 +192,7 @@ override fun afterHookedMethod(param: MethodHookParam) {
|
||||
:::
|
||||
::::
|
||||
|
||||
### Replace Hook
|
||||
#### Replace Hook
|
||||
|
||||
`replaceHook` 方法比较特殊,`YukiHookAPI` 为它做出了多种形式以供选择。
|
||||
|
||||
@@ -226,7 +230,7 @@ intercept()
|
||||
```
|
||||
|
||||
:::
|
||||
::: code-group-item Xposed API
|
||||
::: code-group-item Rovo89 Xposed API
|
||||
|
||||
```kotlin
|
||||
/// 无返回值的方法 void
|
||||
@@ -258,6 +262,6 @@ override fun replaceHookedMethod(param: MethodHookParam) = null
|
||||
:::
|
||||
::::
|
||||
|
||||
## 迁移其它功能
|
||||
## 迁移更多有关 Hook API 的功能
|
||||
|
||||
`YukiHookAPI` 对 Xposed API 进行了完全重写,你可以参考 [API 文档](../api/home) 以及 [特色功能](../api/special-features/reflection) 来决定一些功能性的迁移和使用。
|
||||
`YukiHookAPI` 是一套全新的 Hook API,与其它 Hook API 存在着本质区别,你可以参考 [API 文档](../api/home) 以及 [特色功能](../api/special-features/reflection) 来决定一些功能性的迁移和使用。
|
@@ -295,7 +295,7 @@ override fun onInit() = configs {
|
||||
|
||||
有关作为 Xposed 模块使用的相关配置详细内容,你可以 [点击这里](../config/xposed-using) 继续阅读。
|
||||
|
||||
若你目前正在使用 Xposed API,你可以参考 [从 Xposed API 迁移](../guide/move-to-new-api)。
|
||||
若你目前正在使用 Rovo89 Xposed API 等 Hook API,你可以参考 [从其它 Hook API 迁移](../guide/move-to-new-api)。
|
||||
|
||||
### 作为 Hook API 使用
|
||||
|
||||
@@ -307,7 +307,7 @@ override fun onInit() = configs {
|
||||
|
||||
无论使用任何 **Hook Framework**,你都需要加入其对接的 Xposed 依赖支持。
|
||||
|
||||
若目标 **Hook Framework** 没有集成 Xposed API 你需要自行实现并对接 **XposedBridge**。
|
||||
若目标 **Hook Framework** 没有集成 Rovo89 Xposed API 你需要自行实现并对接 **XposedBridge**。
|
||||
|
||||
:::
|
||||
|
||||
|
51
docs-source/src/zh-cn/guide/supportive.md
Normal file
51
docs-source/src/zh-cn/guide/supportive.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# 支持性
|
||||
|
||||
以下是 `YukiHookAPI` 支持的相关功能、Xposed 框架、Hook Frameworks、Hook APIs。
|
||||
|
||||
> 基本功能
|
||||
|
||||
| Name | ST | Description |
|
||||
| -------------------------------- | --- | ------------------------------------------------------------------------------------------------------------- |
|
||||
| 自动化 Xposed 模块构建 | ✅ | 计划 `YukiHookAPI` 2.x.x 版本使用 [新的 Xposed 模块配置方案](https://github.com/fankes/YukiHookAPI/issues/49) |
|
||||
| ART 动态方法 Hook | ✅ | 多场景下稳定使用 |
|
||||
| Xposed 资源钩子 (Resources Hook) | ❗ | 支持,但计划 `YukiHookAPI` 2.x.x 版本作废 |
|
||||
|
||||
> 扩展功能
|
||||
|
||||
| Name | ST | Description |
|
||||
| -------------------------------------------------------------------------------------- | --- | ---------------------------------------------------------------------------------------------- |
|
||||
| [字节码与反射扩展](../api/special-features/reflection) | ⭕ | 计划 `YukiHookAPI` 2.x.x 版本合并到 [YukiReflection](https://github.com/fankes/YukiReflection) |
|
||||
| [Xposed 模块数据存储](../api/special-features/xposed-storage) | ✅ | 正常使用 |
|
||||
| [Xposed 模块与宿主通讯桥](../api/special-features/xposed-channel) | ✅ | 正常使用 |
|
||||
| [宿主生命周期扩展](../api/special-features/host-lifecycle) | ✅ | 正常使用 |
|
||||
| [注入模块资源 (Resources)](../api/special-features/host-inject#注入模块资源-resources) | ✅ | 正常使用 |
|
||||
| [注册模块 Activity](../api/special-features/host-inject#注册模块-activity) | ✅ | 正常使用 |
|
||||
|
||||
> Xposed 框架
|
||||
|
||||
| Name | ST | Description |
|
||||
| ---------------------------------------------------- | --- | --------------------------------------- |
|
||||
| [LSPosed](https://github.com/LSPosed/LSPosed) | ✅ | 多场景下稳定使用 |
|
||||
| [LSPatch](https://github.com/LSPosed/LSPatch) | ⭕ | 支持,将在此项目完善后逐渐加入 API 支持 |
|
||||
| [EdXposed](https://github.com/ElderDrivers/EdXposed) | ❎ | 已停止维护,不再推荐使用 |
|
||||
| [Dreamland](https://github.com/canyie/Dreamland) | ⭕ | 理论支持 (未经过开发者测试) |
|
||||
| [TaiChi](https://github.com/taichi-framework/TaiChi) | ⭕ | Hook 功能正常 (部分功能有限制) |
|
||||
| [Xposed](https://github.com/rovo89/Xposed) | ❎ | 已停止维护,不再推荐使用 |
|
||||
|
||||
> Hook 框架 (Hook Frameworks)
|
||||
|
||||
| Name | ST | Description |
|
||||
| --------------------------------------------------------- | --- | -------------------------------------------------------- |
|
||||
| [Pine](https://github.com/canyie/pine) | ⭕ | 理论支持 (未经过开发者测试) |
|
||||
| [SandHook](https://github.com/asLody/SandHook) | ❎ | 不支持较新版本的 Android,需要自行对接 Rovo89 Xposed API |
|
||||
| [Whale](https://github.com/asLody/whale) | ❎ | 不支持较新版本的 Android,需要自行对接 Rovo89 Xposed API |
|
||||
| [YAHFA](https://github.com/PAGalaxyLab/YAHFA) | ❎ | 不支持较新版本的 Android,需要自行对接 Rovo89 Xposed API |
|
||||
| [FastHook](https://github.com/turing-technician/FastHook) | ❎ | 已停止维护,不再推荐使用 |
|
||||
| [Epic](https://github.com/tiann/epic) | ❎ | 已停止维护,不再推荐使用 |
|
||||
|
||||
> Hook APIs
|
||||
|
||||
| Name | ST | Description |
|
||||
| ------------------------------------------------- | --- | --------------------------------- |
|
||||
| [Rovo89 Xposed API](https://api.xposed.info/) | ✅ | 多场景下稳定使用 |
|
||||
| [Modern Xposed API](https://github.com/libxposed) | ❎ | 计划 `YukiHookAPI` 2.x.x 版本支持 |
|
Reference in New Issue
Block a user