mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-04 09:45:19 +08:00
72 lines
20 KiB
JavaScript
72 lines
20 KiB
JavaScript
import{_ as t,r as n,o as p,c as i,b as s,d as l,e,w as a,a as A}from"./app-BpUB8-Q8.js";const d={},y=s("h1",{id:"介绍",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#介绍","aria-hidden":"true"},"#"),l(" 介绍")],-1),D=s("blockquote",null,[s("p",null,[s("code",null,"YukiHookAPI"),l(" 是一个集成化的 Hook API 框架,本身不提供任何 Hook 功能,需要 Xposed 相关基础 API 的支持。")])],-1),B=s("h2",{id:"背景",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#背景","aria-hidden":"true"},"#"),l(" 背景")],-1),C=s("p",null,"这是一个使用 Kotlin 基于 Xposed API 重新构建的高效 Hook API,同时为 Xposed 模块的开发打造了丰富的功能扩展。",-1),u={href:"https://www.bilibili.com/bangumi/play/ss5016",target:"_blank",rel:"noopener noreferrer"},m={href:"https://github.com/fankes/TMore",target:"_blank",rel:"noopener noreferrer"},b=A('<h2 id="用途" tabindex="-1"><a class="header-anchor" href="#用途" aria-hidden="true">#</a> 用途</h2><p><code>YukiHookAPI</code> 完全采用 Kotlin <strong>lambda</strong> 语法构建。</p><p>抛弃原始不太友好的 <code>XposedHelpers</code>,你可以使用它来轻松创建 Xposed 模块以及轻松实现自定义 Hook API。</p><h2 id="语言要求" tabindex="-1"><a class="header-anchor" href="#语言要求" aria-hidden="true">#</a> 语言要求</h2><p>请使用 Kotlin,框架部分代码构成同样兼容 Java 但基础 Hook 场景的实现<strong>可能完全无法使用</strong>。</p><p>文档全部的 Demo 示例代码都将使用 Kotlin 进行描述,如果你完全不会使用 Kotlin 那你将有可能无法使用 <code>YukiHookAPI</code>。</p><h2 id="灵感来源" tabindex="-1"><a class="header-anchor" href="#灵感来源" aria-hidden="true">#</a> 灵感来源</h2><p>以前,我们在构建 Xposed 模块的时候,首先需要在 <code>assets</code> 下创建 <code>xposed_init</code> 文件。</p><p>然后,将自己的入口类名手动填入文件中,使用 <code>XposedHelpers</code> 去实现我们的 Hook 逻辑。</p><p>自 Kotlin 作为 Android 主要开发语言以来,这套 API 用起来确实已经不是很优雅了。</p><p>有没有什么 <strong>好用、轻量、优雅</strong> 的解决办法呢?</p><p>本着这样的想法,<code>YukiHookAPI</code> 诞生了。</p><p>现在,我们只需要编写少量的代码,一切时间开销和花费交给自动化处理。</p><p>借助 Kotlin 优雅的 <strong>lambda</strong> 写法以及 <code>YukiHookAPI</code>,可以让你的 Hook 逻辑更加美观清晰。</p><blockquote><p>示例如下</p></blockquote>',15),v=s("div",{class:"language-kotlin line-numbers-mode","data-ext":"kt"},[s("pre",{class:"shiki github-dark-dimmed",style:{"background-color":"#22272e"},tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#F69D50"}},"@InjectYukiHookWithXposed")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#F47067"}},"object"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"HookEntry"),s("span",{style:{color:"#ADBAC7"}}," : "),s("span",{style:{color:"#F69D50"}},"IYukiHookXposedInit"),s("span",{style:{color:"#ADBAC7"}}," {")]),l(`
|
||
`),s("span",{class:"line"}),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"override"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"fun"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"onHook"),s("span",{style:{color:"#ADBAC7"}},"() "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"encase"),s("span",{style:{color:"#ADBAC7"}}," {")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"loadZygote"),s("span",{style:{color:"#ADBAC7"}}," {")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," Activity::"),s("span",{style:{color:"#DCBDFB"}},"class"),s("span",{style:{color:"#ADBAC7"}},"."),s("span",{style:{color:"#DCBDFB"}},"resolve"),s("span",{style:{color:"#ADBAC7"}},"()."),s("span",{style:{color:"#DCBDFB"}},"firstMethod"),s("span",{style:{color:"#ADBAC7"}}," {")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," name "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#96D0FF"}},'"onCreate"')]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"parameters"),s("span",{style:{color:"#ADBAC7"}},"(Bundle::"),s("span",{style:{color:"#DCBDFB"}},"class"),s("span",{style:{color:"#ADBAC7"}},")")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }."),s("span",{style:{color:"#DCBDFB"}},"hook"),s("span",{style:{color:"#ADBAC7"}}," {")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"before"),s("span",{style:{color:"#ADBAC7"}}," {")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Your code here.")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"after"),s("span",{style:{color:"#ADBAC7"}}," {")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Your code here.")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"loadApp"),s("span",{style:{color:"#ADBAC7"}},"(name "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#96D0FF"}},'"com.android.browser"'),s("span",{style:{color:"#ADBAC7"}},") {")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," Activity::"),s("span",{style:{color:"#DCBDFB"}},"class"),s("span",{style:{color:"#ADBAC7"}},"."),s("span",{style:{color:"#DCBDFB"}},"resolve"),s("span",{style:{color:"#ADBAC7"}},"()."),s("span",{style:{color:"#DCBDFB"}},"firstMethod"),s("span",{style:{color:"#ADBAC7"}}," {")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," name "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#96D0FF"}},'"onCreate"')]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"parameters"),s("span",{style:{color:"#ADBAC7"}},"(Bundle::"),s("span",{style:{color:"#DCBDFB"}},"class"),s("span",{style:{color:"#ADBAC7"}},")")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }."),s("span",{style:{color:"#DCBDFB"}},"hook"),s("span",{style:{color:"#ADBAC7"}}," {")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"before"),s("span",{style:{color:"#ADBAC7"}}," {")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Your code here.")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"after"),s("span",{style:{color:"#ADBAC7"}}," {")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Your code here.")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"}")]),l(`
|
||
`),s("span",{class:"line"})])]),s("div",{class:"line-numbers","aria-hidden":"true"},[s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"})])],-1),h=s("div",{class:"language-kotlin line-numbers-mode","data-ext":"kt"},[s("pre",{class:"shiki github-dark-dimmed",style:{"background-color":"#22272e"},tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#F47067"}},"class"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"HookEntry"),s("span",{style:{color:"#ADBAC7"}}," : "),s("span",{style:{color:"#F69D50"}},"IXposedHookZygoteInit"),s("span",{style:{color:"#ADBAC7"}},", "),s("span",{style:{color:"#DCBDFB"}},"IXposedHookLoadPackage"),s("span",{style:{color:"#ADBAC7"}}," {")]),l(`
|
||
`),s("span",{class:"line"}),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"private"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"lateinit"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"var"),s("span",{style:{color:"#ADBAC7"}}," moduleResources: "),s("span",{style:{color:"#F69D50"}},"XModuleResources")]),l(`
|
||
`),s("span",{class:"line"}),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"override"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"fun"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"initZygote"),s("span",{style:{color:"#ADBAC7"}},"(sparam: "),s("span",{style:{color:"#F69D50"}},"IXposedHookZygoteInit"),s("span",{style:{color:"#ADBAC7"}},".StartupParam) {")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," moduleResources "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," XModuleResources."),s("span",{style:{color:"#DCBDFB"}},"createInstance"),s("span",{style:{color:"#ADBAC7"}},"(sparam.modulePath, "),s("span",{style:{color:"#6CB6FF"}},"null"),s("span",{style:{color:"#ADBAC7"}},")")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," XposedHelpers."),s("span",{style:{color:"#DCBDFB"}},"findAndHookMethod"),s("span",{style:{color:"#ADBAC7"}},"(")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," Activity::"),s("span",{style:{color:"#DCBDFB"}},"class"),s("span",{style:{color:"#ADBAC7"}},".java.name,")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"null"),s("span",{style:{color:"#ADBAC7"}},", "),s("span",{style:{color:"#96D0FF"}},'"onCreate"'),s("span",{style:{color:"#ADBAC7"}},",")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," Bundle::"),s("span",{style:{color:"#DCBDFB"}},"class"),s("span",{style:{color:"#ADBAC7"}},".java,")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," object : "),s("span",{style:{color:"#F69D50"}},"XC_MethodHook"),s("span",{style:{color:"#ADBAC7"}},"() {")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"override"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"fun"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"beforeHookedMethod"),s("span",{style:{color:"#ADBAC7"}},"(param: "),s("span",{style:{color:"#F69D50"}},"MethodHookParam"),s("span",{style:{color:"#ADBAC7"}},"?) {")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Your code here.")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),l(`
|
||
`),s("span",{class:"line"}),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"override"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"fun"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"afterHookedMethod"),s("span",{style:{color:"#ADBAC7"}},"(param: "),s("span",{style:{color:"#F69D50"}},"MethodHookParam"),s("span",{style:{color:"#ADBAC7"}},"?) {")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Your code here.")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," })")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),l(`
|
||
`),s("span",{class:"line"}),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"override"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"fun"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"handleLoadPackage"),s("span",{style:{color:"#ADBAC7"}},"(lpparam: "),s("span",{style:{color:"#F69D50"}},"XC_LoadPackage"),s("span",{style:{color:"#ADBAC7"}},".LoadPackageParam) {")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"if"),s("span",{style:{color:"#ADBAC7"}}," (lpparam.packageName "),s("span",{style:{color:"#F47067"}},"=="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#96D0FF"}},'"com.android.browser"'),s("span",{style:{color:"#ADBAC7"}},")")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," XposedHelpers."),s("span",{style:{color:"#DCBDFB"}},"findAndHookMethod"),s("span",{style:{color:"#ADBAC7"}},"(")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," Activity::"),s("span",{style:{color:"#DCBDFB"}},"class"),s("span",{style:{color:"#ADBAC7"}},".java.name,")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," lpparam.classLoader, "),s("span",{style:{color:"#96D0FF"}},'"onCreate"'),s("span",{style:{color:"#ADBAC7"}},",")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," Bundle::"),s("span",{style:{color:"#DCBDFB"}},"class"),s("span",{style:{color:"#ADBAC7"}},".java,")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," object : "),s("span",{style:{color:"#F69D50"}},"XC_MethodHook"),s("span",{style:{color:"#ADBAC7"}},"() {")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"override"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"fun"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"beforeHookedMethod"),s("span",{style:{color:"#ADBAC7"}},"(param: "),s("span",{style:{color:"#F69D50"}},"MethodHookParam"),s("span",{style:{color:"#ADBAC7"}},"?) {")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Your code here.")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),l(`
|
||
`),s("span",{class:"line"}),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"override"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"fun"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"afterHookedMethod"),s("span",{style:{color:"#ADBAC7"}},"(param: "),s("span",{style:{color:"#F69D50"}},"MethodHookParam"),s("span",{style:{color:"#ADBAC7"}},"?) {")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Your code here.")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," })")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),l(`
|
||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"}")]),l(`
|
||
`),s("span",{class:"line"})])]),s("div",{class:"line-numbers","aria-hidden":"true"},[s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"})])],-1),F=s("p",null,"是的,你没有看错,仅仅就需要这些代码,就能完全取代传统的 Xposed API 实现同样的功能。",-1),k=s("p",null,[l("现在,借助高效强大的 "),s("code",null,"YukiHookAPI"),l(",你就可以实现一个非常简单的 Xposed 模块。")],-1),_={class:"custom-container tip"},f=s("p",{class:"custom-container-title"},"小提示",-1),H=s("code",null,"1.3.0",-1),I=s("code",null,"YukiHookAPI",-1),g={href:"https://github.com/HighCapable/KavaRef",target:"_blank",rel:"noopener noreferrer"},P=s("p",null,[l("现在,你可以借助 "),s("code",null,"KavaRef"),l(" 的强大反射能力让 "),s("code",null,"YukiHookAPI"),l(" 更加易用。")],-1);function X(Y,x){const o=n("ExternalLinkIcon"),c=n("CodeGroupItem"),r=n("CodeGroup");return p(),i("div",null,[y,D,B,C,s("p",null,[l("名称取自 "),s("a",u,[l("《ももくり》女主 栗原 雪(Yuki)"),e(o)]),l("。")]),s("p",null,[l("前身为 "),s("a",m,[l("开发学习项目"),e(o)]),l(" 中使用的 Innocent Xposed API,现在重新命名并开源。")]),b,e(r,null,{default:a(()=>[e(c,{title:"Yuki Hook API"},{default:a(()=>[v]),_:1}),e(c,{title:"Rovo89 Xposed API"},{default:a(()=>[h]),_:1})]),_:1}),F,k,s("div",_,[f,s("p",null,[l("从 "),H,l(" 版本开始,"),I,l(" 已将自身的反射 API 部分迁移至 "),s("a",g,[l("KavaRef"),e(o)]),l(" (包括上方演示的反射 API 部分)。")]),P])])}const K=t(d,[["render",X],["__file","home.html.vue"]]);export{K as default};
|