mirror of
https://github.com/HighCapable/YukiHookAPI.git
synced 2025-09-06 02:35:40 +08:00
Automatically compile documentation (1.1.6)
This commit is contained in:
188
docs/assets/move-to-new-api.html.bbe91a35.js
Normal file
188
docs/assets/move-to-new-api.html.bbe91a35.js
Normal file
@@ -0,0 +1,188 @@
|
||||
import{_ as t,r as c,o as i,c as p,d as l,w as n,a as r,b as s,e}from"./app.7900f22c.js";const A={},y=r('<h1 id="migrate-from-xposed-api" tabindex="-1"><a class="header-anchor" href="#migrate-from-xposed-api" aria-hidden="true">#</a> Migrate from Xposed API</h1><blockquote><p>If you are familiar with Xposed API, you can refer to the same point below to quickly migrate your API to <code>YukiHookAPI</code>.</p></blockquote><h2 id="migrate-hook-entry-point" tabindex="-1"><a class="header-anchor" href="#migrate-hook-entry-point" aria-hidden="true">#</a> Migrate Hook Entry Point</h2><blockquote><p>Migrated from <code>XC_LoadPackage.LoadPackageParam</code> to <code>PackageParam</code>.</p></blockquote><p><code>YukiHookAPI</code> implements the <code>lambda</code> method body <code>this</code> usage for <code>PackageParam</code>, and the <code>PackageParam</code> object can be obtained globally in the <code>encase</code> method body.</p><blockquote><p>The API function differences are compared as follows</p></blockquote>',6),d=s("div",{class:"language-kotlin ext-kt line-numbers-mode"},[s("pre",{class:"shiki",style:{"background-color":"#22272e"}},[s("code",null,[s("span",{class:"line"},[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"}}," encase {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the package name of the current Hook")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," packageName")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the ApplicationInfo of the current Hook")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," appInfo")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the system context object")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," systemContext")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the host Application lifecycle")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," appContext")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Hook specified app")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," loadApp(name "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#96D0FF"}},'"com.demo.test"'),s("span",{style:{color:"#ADBAC7"}},") {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Class Hook")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," findClass("),s("span",{style:{color:"#96D0FF"}},'"com.demo.test.TestClass"'),s("span",{style:{color:"#ADBAC7"}},").hook {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," injectMember {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," method {")]),e(`
|
||||
`),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"}},'"test"')]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," param("),s("span",{style:{color:"#F69D50"}},"BooleanType"),s("span",{style:{color:"#ADBAC7"}},")")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," afterHook {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// ...")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Resources Hook (fixed usage)")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," resources().hook {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," injectResource {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," conditions {")]),e(`
|
||||
`),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"}},'"ic_launcher"')]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," mipmap()")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," replaceToModuleResource("),s("span",{style:{color:"#F69D50"}},"R"),s("span",{style:{color:"#ADBAC7"}},".mipmap.ic_launcher)")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"}")]),e(`
|
||||
`),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"})])],-1),u=s("div",{class:"language-kotlin ext-kt line-numbers-mode"},[s("pre",{class:"shiki",style:{"background-color":"#22272e"}},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#F47067"}},"private"),s("span",{style:{color:"#ADBAC7"}}," lateinit "),s("span",{style:{color:"#F47067"}},"var"),s("span",{style:{color:"#ADBAC7"}}," moduleResources"),s("span",{style:{color:"#F47067"}},":"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"XModuleResources")]),e(`
|
||||
`),s("span",{class:"line"}),e(`
|
||||
`),s("span",{class:"line"},[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:"#F47067"}},":"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"IXposedHookZygoteInit"),s("span",{style:{color:"#ADBAC7"}},"."),s("span",{style:{color:"#F69D50"}},"StartupParam"),s("span",{style:{color:"#ADBAC7"}},") {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," moduleResources "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"XModuleResources"),s("span",{style:{color:"#ADBAC7"}},".createInstance(sparam.modulePath, "),s("span",{style:{color:"#6CB6FF"}},"null"),s("span",{style:{color:"#ADBAC7"}},")")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"}")]),e(`
|
||||
`),s("span",{class:"line"}),e(`
|
||||
`),s("span",{class:"line"},[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:"#F47067"}},":"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"XC_LoadPackage"),s("span",{style:{color:"#ADBAC7"}},"."),s("span",{style:{color:"#F69D50"}},"LoadPackageParam"),s("span",{style:{color:"#ADBAC7"}},") {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the package name of the current Hook")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," lpparam.packageName")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the ApplicationInfo of the current Hook")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," lpparam.applicationInfo")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the system context object")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// There is no ready-made calling method in the native Xposed API, you need to reflect ActivityThread to achieve it")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the host Application lifecycle")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"AndroidAppHelper"),s("span",{style:{color:"#ADBAC7"}},".currentApplication()")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Class Hook")]),e(`
|
||||
`),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.demo.test"'),s("span",{style:{color:"#ADBAC7"}},")")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"XposedHelpers"),s("span",{style:{color:"#ADBAC7"}},".findAndHookMethod(")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#96D0FF"}},'"com.demo.test.TestClass"'),s("span",{style:{color:"#ADBAC7"}},", lpparam.classLoader,")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#96D0FF"}},'"test"'),s("span",{style:{color:"#ADBAC7"}},", Boolean::"),s("span",{style:{color:"#6CB6FF"}},"class"),s("span",{style:{color:"#ADBAC7"}},".java,")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"object"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},":"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"XC_MethodHook"),s("span",{style:{color:"#ADBAC7"}},"() {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," override fun afterHookedMethod(param"),s("span",{style:{color:"#F47067"}},":"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"MethodHookParam"),s("span",{style:{color:"#ADBAC7"}},") {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"//"),s("span",{style:{color:"#ADBAC7"}}," ...")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," )")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"}")]),e(`
|
||||
`),s("span",{class:"line"}),e(`
|
||||
`),s("span",{class:"line"},[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"}},"handleInitPackageResources"),s("span",{style:{color:"#ADBAC7"}},"(resparam"),s("span",{style:{color:"#F47067"}},":"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"XC_InitPackageResources"),s("span",{style:{color:"#ADBAC7"}},"."),s("span",{style:{color:"#F69D50"}},"InitPackageResourcesParam"),s("span",{style:{color:"#ADBAC7"}},") {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the package name of the current Hook")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," resparam.packageName")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Resources Hook")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," resparam.res.setReplacement(")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#96D0FF"}},'"com.demo.test"'),s("span",{style:{color:"#ADBAC7"}},", "),s("span",{style:{color:"#96D0FF"}},'"mipmap"'),s("span",{style:{color:"#ADBAC7"}},", "),s("span",{style:{color:"#96D0FF"}},'"ic_launcher"'),s("span",{style:{color:"#ADBAC7"}},",")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," moduleResources.fwd("),s("span",{style:{color:"#F69D50"}},"R"),s("span",{style:{color:"#ADBAC7"}},".mipmap.ic_launcher)")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," )")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"}")]),e(`
|
||||
`),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"})])],-1),m=r('<h2 id="migrate-hook-method-body" tabindex="-1"><a class="header-anchor" href="#migrate-hook-method-body" aria-hidden="true">#</a> Migrate Hook Method Body</h2><blockquote><p>Migrated from <code>XC_MethodHook.MethodHookParam</code> to <code>HookParam</code>.</p></blockquote><h3 id="before-after-hook" tabindex="-1"><a class="header-anchor" href="#before-after-hook" aria-hidden="true">#</a> Before/After Hook</h3><p><code>YukiHookAPI</code> also implements the <code>lambda</code> method body <code>this</code> usage for <code>HookParam</code>, and the <code>HookParam</code> object can be obtained globally in the method bodies such as <code>beforeHook</code> and <code>afterHook</code>.</p><blockquote><p>The API function differences are compared as follows</p></blockquote>',5),D=s("div",{class:"language-kotlin ext-kt line-numbers-mode"},[s("pre",{class:"shiki",style:{"background-color":"#22272e"}},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"afterHook {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the current Hook instance")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," instance")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the Class instance of the current Hook")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," instanceClass")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get and cast the current Hook instance to the specified type T")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," instance"),s("span",{style:{color:"#F47067"}},"<"),s("span",{style:{color:"#F69D50"}},"T"),s("span",{style:{color:"#F47067"}},">"),s("span",{style:{color:"#ADBAC7"}},"()")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the method parameter array")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," args")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the first T of the method parameter")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," args().first().cast"),s("span",{style:{color:"#F47067"}},"<"),s("span",{style:{color:"#F69D50"}},"T"),s("span",{style:{color:"#F47067"}},">"),s("span",{style:{color:"#ADBAC7"}},"()")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the last bit of the method parameter T")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," args().last().cast"),s("span",{style:{color:"#F47067"}},"<"),s("span",{style:{color:"#F69D50"}},"T"),s("span",{style:{color:"#F47067"}},">"),s("span",{style:{color:"#ADBAC7"}},"()")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get any subscript T of the method parameter, here is an example of 2")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," args(index "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"2"),s("span",{style:{color:"#ADBAC7"}},").cast"),s("span",{style:{color:"#F47067"}},"<"),s("span",{style:{color:"#F69D50"}},"T"),s("span",{style:{color:"#F47067"}},">"),s("span",{style:{color:"#ADBAC7"}},"()")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Set any subscript of the method parameter, here is an example of 2")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," args(index "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"2"),s("span",{style:{color:"#ADBAC7"}},").set(...)")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the return value")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," result")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the return value and cast to T")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," result"),s("span",{style:{color:"#F47067"}},"<"),s("span",{style:{color:"#F69D50"}},"T"),s("span",{style:{color:"#F47067"}},">"),s("span",{style:{color:"#ADBAC7"}},"()")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Modify the content of the return value")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," result "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," ...")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Remove the content of the return value")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," resultNull()")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the data storage instance within the scope of the current callback method body")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," dataExtra")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Throw an exception to the Hook app")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"Throwable"),s("span",{style:{color:"#ADBAC7"}},"("),s("span",{style:{color:"#96D0FF"}},'"Fatal"'),s("span",{style:{color:"#ADBAC7"}},").throwToApp()")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Execute the original method without hook and call with the original method parameters, generics can be omitted")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," callOriginal"),s("span",{style:{color:"#F47067"}},"<"),s("span",{style:{color:"#6CB6FF"}},"Any?"),s("span",{style:{color:"#F47067"}},">"),s("span",{style:{color:"#ADBAC7"}},"()")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Execute the original method without Hook and customize the method parameter call, the generic type can be omitted")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," invokeOriginal"),s("span",{style:{color:"#F47067"}},"<"),s("span",{style:{color:"#6CB6FF"}},"Any?"),s("span",{style:{color:"#F47067"}},">"),s("span",{style:{color:"#ADBAC7"}},"(...)")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"}")]),e(`
|
||||
`),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"})])],-1),C=s("div",{class:"language-kotlin ext-kt line-numbers-mode"},[s("pre",{class:"shiki",style:{"background-color":"#22272e"}},[s("code",null,[s("span",{class:"line"},[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:"#F47067"}},":"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"MethodHookParam"),s("span",{style:{color:"#ADBAC7"}},") {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the current Hook instance")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," param.thisObject")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the Class instance of the current Hook")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," param.thisObject.javaClass")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get and cast the current Hook instance to the specified type T")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," param.thisObject "),s("span",{style:{color:"#F47067"}},"as"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"T")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the method parameter array")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," param.args")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the first T of the method parameter")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," param.args["),s("span",{style:{color:"#6CB6FF"}},"0"),s("span",{style:{color:"#ADBAC7"}},"] "),s("span",{style:{color:"#F47067"}},"as"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"T")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the last bit of the method parameter T")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," param.args[param.args.lastIndex] "),s("span",{style:{color:"#F47067"}},"as"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"T")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get any subscript T of the method parameter, here is an example of 2")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," param.args["),s("span",{style:{color:"#6CB6FF"}},"2"),s("span",{style:{color:"#ADBAC7"}},"] "),s("span",{style:{color:"#F47067"}},"as"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"T")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Set any subscript of the method parameter, here is an example of 2")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," param.args["),s("span",{style:{color:"#6CB6FF"}},"2"),s("span",{style:{color:"#ADBAC7"}},"] "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," ...")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the return value")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," param.result")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the return value and cast to T")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," param.result "),s("span",{style:{color:"#F47067"}},"as"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"T")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Modify the content of the return value")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," param.result "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," ...")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Remove the content of the return value")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," param.result "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"null")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Get the data storage instance within the scope of the current callback method body")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," param.extra")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Throw an exception to the Hook app")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," param.throwable "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"Throwable"),s("span",{style:{color:"#ADBAC7"}},"("),s("span",{style:{color:"#96D0FF"}},'"Fatal"'),s("span",{style:{color:"#ADBAC7"}},")")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Execute the original method without hooking")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"XposedBridge"),s("span",{style:{color:"#ADBAC7"}},".invokeOriginalMethod(param.method, param.thisObject, ...)")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"}")]),e(`
|
||||
`),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),B=s("h3",{id:"replace-hook",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#replace-hook","aria-hidden":"true"},"#"),e(" Replace Hook")],-1),h=s("p",null,[e("The "),s("code",null,"replaceHook"),e(" method is special, and the "),s("code",null,"YukiHookAPI"),e(" makes a variety of forms for it to choose from.")],-1),b=s("blockquote",null,[s("p",null,"The API function differences are compared as follows")],-1),v=s("div",{class:"language-kotlin ext-kt line-numbers-mode"},[s("pre",{class:"shiki",style:{"background-color":"#22272e"}},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#768390"}},"/// A method with no return value void")]),e(`
|
||||
`),s("span",{class:"line"}),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"replaceUnit {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Implement the replaced logic directly here")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"}")]),e(`
|
||||
`),s("span",{class:"line"}),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#768390"}},"/// A method with a return value")]),e(`
|
||||
`),s("span",{class:"line"}),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"replaceAny {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Implement the replaced logic here")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// ...")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Need to return the return value corresponding to the method, no need to write return, just put the parameter in the last digit")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Assuming the return value of this method is an Int, we just need to ensure that the last bit is the return value we need")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"0")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"}")]),e(`
|
||||
`),s("span",{class:"line"}),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#768390"}},"/// For some methods, we just need to replace their return value, then there are the following implementations")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#768390"}},"/// It should be noted that the parameters passed in by the method of directly replacing the return value are fixed. If you want to dynamically replace the return value, please use the above replaceAny method body")]),e(`
|
||||
`),s("span",{class:"line"}),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#768390"}},"// Replace with the return value you need")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"replaceTo(...)")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#768390"}},"// Replace with return value of type Boolean")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"replaceToTrue()")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#768390"}},"// Intercept return value")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"intercept()")]),e(`
|
||||
`),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"})])],-1),F=s("div",{class:"language-kotlin ext-kt line-numbers-mode"},[s("pre",{class:"shiki",style:{"background-color":"#22272e"}},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#768390"}},"/// A method with no return value void")]),e(`
|
||||
`),s("span",{class:"line"}),e(`
|
||||
`),s("span",{class:"line"},[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"}},"replaceHookedMethod"),s("span",{style:{color:"#ADBAC7"}},"(param"),s("span",{style:{color:"#F47067"}},":"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"MethodHookParam"),s("span",{style:{color:"#ADBAC7"}},")"),s("span",{style:{color:"#F47067"}},":"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"Any?"),s("span",{style:{color:"#ADBAC7"}}," {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Implement the replaced logic directly here")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"return"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"null")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"}")]),e(`
|
||||
`),s("span",{class:"line"}),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#768390"}},"/// A method with a return value")]),e(`
|
||||
`),s("span",{class:"line"}),e(`
|
||||
`),s("span",{class:"line"},[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"}},"replaceHookedMethod"),s("span",{style:{color:"#ADBAC7"}},"(param"),s("span",{style:{color:"#F47067"}},":"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"MethodHookParam"),s("span",{style:{color:"#ADBAC7"}},")"),s("span",{style:{color:"#F47067"}},":"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"Int"),s("span",{style:{color:"#ADBAC7"}}," {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Implement the replaced logic here")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// ...")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#768390"}},"// Assume the return value of this method is an Int")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F47067"}},"return"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"0")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"}")]),e(`
|
||||
`),s("span",{class:"line"}),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#768390"}},"/// For some methods, we just need to replace their return value, then there are the following implementations")]),e(`
|
||||
`),s("span",{class:"line"}),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#768390"}},"// Replace with the return value you need")]),e(`
|
||||
`),s("span",{class:"line"},[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"}},"replaceHookedMethod"),s("span",{style:{color:"#ADBAC7"}},"(param"),s("span",{style:{color:"#F47067"}},":"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"MethodHookParam"),s("span",{style:{color:"#ADBAC7"}},") "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," ...")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#768390"}},"// Replace with return value of type Boolean")]),e(`
|
||||
`),s("span",{class:"line"},[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"}},"replaceHookedMethod"),s("span",{style:{color:"#ADBAC7"}},"(param"),s("span",{style:{color:"#F47067"}},":"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"MethodHookParam"),s("span",{style:{color:"#ADBAC7"}},") "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"true")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#768390"}},"// Intercept return value")]),e(`
|
||||
`),s("span",{class:"line"},[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"}},"replaceHookedMethod"),s("span",{style:{color:"#ADBAC7"}},"(param"),s("span",{style:{color:"#F47067"}},":"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#F69D50"}},"MethodHookParam"),s("span",{style:{color:"#ADBAC7"}},") "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"null")]),e(`
|
||||
`),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"})])],-1),k=s("h2",{id:"migrate-other-features",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#migrate-other-features","aria-hidden":"true"},"#"),e(" Migrate Other Features")],-1),f=s("p",null,[s("code",null,"YukiHookAPI"),e(" is a complete rewrite of the Xposed API, you can refer to "),s("a",{href:"../api/home"},"API Document"),e(" and "),s("a",{href:"../api/special-features/reflection"},"Special Features"),e(" to determine some functional Migration and use.")],-1);function g(H,_){const a=c("CodeGroupItem"),o=c("CodeGroup");return i(),p("div",null,[y,l(o,null,{default:n(()=>[l(a,{title:"Yuki Hook API"},{default:n(()=>[d]),_:1}),l(a,{title:"Xposed API"},{default:n(()=>[u]),_:1})]),_:1}),m,l(o,null,{default:n(()=>[l(a,{title:"Yuki Hook API"},{default:n(()=>[D]),_:1}),l(a,{title:"Xposed API"},{default:n(()=>[C]),_:1})]),_:1}),B,h,b,l(o,null,{default:n(()=>[l(a,{title:"Yuki Hook API"},{default:n(()=>[v]),_:1}),l(a,{title:"Xposed API"},{default:n(()=>[F]),_:1})]),_:1}),k,f])}const I=t(A,[["render",g],["__file","move-to-new-api.html.vue"]]);export{I as default};
|
Reference in New Issue
Block a user