From 3f896d240908934fcedf440f3481c52fa9947a4e Mon Sep 17 00:00:00 2001 From: Fankesyooni Date: Fri, 4 Feb 2022 00:41:29 +0800 Subject: [PATCH] ... --- .../demo/hook/inject/MainInjecter.kt | 128 +++++++++--------- 1 file changed, 67 insertions(+), 61 deletions(-) diff --git a/app/src/main/java/com/highcapable/yukihookapi/demo/hook/inject/MainInjecter.kt b/app/src/main/java/com/highcapable/yukihookapi/demo/hook/inject/MainInjecter.kt index 00f8b846..391df579 100644 --- a/app/src/main/java/com/highcapable/yukihookapi/demo/hook/inject/MainInjecter.kt +++ b/app/src/main/java/com/highcapable/yukihookapi/demo/hook/inject/MainInjecter.kt @@ -29,12 +29,18 @@ package com.highcapable.yukihookapi.demo.hook.inject +import android.app.AlertDialog +import android.widget.Toast import com.highcapable.yukihookapi.annotation.xposed.InjectYukiHookWithXposed import com.highcapable.yukihookapi.demo.BuildConfig -import com.highcapable.yukihookapi.demo.hook.MainHooker -import com.highcapable.yukihookapi.demo.hook.SecondHooker +import com.highcapable.yukihookapi.demo.InjectTest +import com.highcapable.yukihookapi.demo.MainActivity import com.highcapable.yukihookapi.hook.factory.encase +import com.highcapable.yukihookapi.hook.factory.findMethod import com.highcapable.yukihookapi.hook.proxy.YukiHookXposedInitProxy +import com.highcapable.yukihookapi.hook.type.ActivityClass +import com.highcapable.yukihookapi.hook.type.BundleClass +import com.highcapable.yukihookapi.hook.type.StringType // for test @InjectYukiHookWithXposed @@ -42,65 +48,65 @@ class MainInjecter : YukiHookXposedInitProxy { override fun onHook() { // 方案 1 - encase(BuildConfig.APPLICATION_ID, MainHooker(), SecondHooker()) + // encase(BuildConfig.APPLICATION_ID, MainHooker(), SecondHooker()) // 方案 2 -// encase(BuildConfig.APPLICATION_ID) { -// loadApp(name = BuildConfig.APPLICATION_ID) { -// MainActivity::class.java.hook { -// injectMember { -// method { -// name = "test" -// returnType = StringType -// } -// replaceTo("这段文字已被 Hook 成功") -// } -// injectMember { -// method { -// name = "test" -// param(StringType) -// returnType = StringType -// } -// beforeHook { args().set("方法参数已被 Hook 成功") } -// } -// } -// InjectTest::class.java.hook { -// injectMember { -// constructor { param(StringType) } -// beforeHook { args().set("构造方法已被 Hook 成功") } -// } -// } -// findClass(name = "$packageName.InjectTestName").hook { -// injectMember { -// constructor { param(StringType) } -// beforeHook { args().set("构造方法已被 Hook 成功 [2]") } -// } -// } -// } -// loadApp(name = "com.android.browser") { -// ActivityClass.hook { -// injectMember { -// method { -// name = "onCreate" -// param(BundleClass) -// } -// afterHook { -// AlertDialog.Builder(instance()) -// .setCancelable(false) -// .setTitle("测试 Hook") -// .setMessage("Hook 已成功") -// .setPositiveButton("OK") { _, _ -> -// Toast.makeText(instance(), "Hook Success", Toast.LENGTH_SHORT).show() -// }.show() -// } -// } -// injectMember { -// member = hookClass.findMethod(name = "onStart") -// afterHook { -// Toast.makeText(instance(), "手动 Hook", Toast.LENGTH_SHORT).show() -// } -// } -// } -// } -// } + encase(BuildConfig.APPLICATION_ID) { + loadApp(name = BuildConfig.APPLICATION_ID) { + MainActivity::class.java.hook { + injectMember { + method { + name = "test" + returnType = StringType + } + replaceTo("这段文字已被 Hook 成功") + } + injectMember { + method { + name = "test" + param(StringType) + returnType = StringType + } + beforeHook { args().set("方法参数已被 Hook 成功") } + } + } + InjectTest::class.java.hook { + injectMember { + constructor { param(StringType) } + beforeHook { args().set("构造方法已被 Hook 成功") } + } + } + findClass(name = "$packageName.InjectTestName").hook { + injectMember { + constructor { param(StringType) } + beforeHook { args().set("构造方法已被 Hook 成功 [2]") } + } + } + } + loadApp(name = "com.android.browser") { + ActivityClass.hook { + injectMember { + method { + name = "onCreate" + param(BundleClass) + } + afterHook { + AlertDialog.Builder(instance()) + .setCancelable(false) + .setTitle("测试 Hook") + .setMessage("Hook 已成功") + .setPositiveButton("OK") { _, _ -> + Toast.makeText(instance(), "Hook Success", Toast.LENGTH_SHORT).show() + }.show() + } + } + injectMember { + member = hookClass.findMethod(name = "onStart") + afterHook { + Toast.makeText(instance(), "手动 Hook", Toast.LENGTH_SHORT).show() + } + } + } + } + } } } \ No newline at end of file