This commit is contained in:
2022-02-04 00:41:29 +08:00
parent b560141806
commit 3f896d2409

View File

@@ -29,12 +29,18 @@
package com.highcapable.yukihookapi.demo.hook.inject 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.annotation.xposed.InjectYukiHookWithXposed
import com.highcapable.yukihookapi.demo.BuildConfig import com.highcapable.yukihookapi.demo.BuildConfig
import com.highcapable.yukihookapi.demo.hook.MainHooker import com.highcapable.yukihookapi.demo.InjectTest
import com.highcapable.yukihookapi.demo.hook.SecondHooker import com.highcapable.yukihookapi.demo.MainActivity
import com.highcapable.yukihookapi.hook.factory.encase 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.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 // for test
@InjectYukiHookWithXposed @InjectYukiHookWithXposed
@@ -42,65 +48,65 @@ class MainInjecter : YukiHookXposedInitProxy {
override fun onHook() { override fun onHook() {
// 方案 1 // 方案 1
encase(BuildConfig.APPLICATION_ID, MainHooker(), SecondHooker()) // encase(BuildConfig.APPLICATION_ID, MainHooker(), SecondHooker())
// 方案 2 // 方案 2
// encase(BuildConfig.APPLICATION_ID) { encase(BuildConfig.APPLICATION_ID) {
// loadApp(name = BuildConfig.APPLICATION_ID) { loadApp(name = BuildConfig.APPLICATION_ID) {
// MainActivity::class.java.hook { MainActivity::class.java.hook {
// injectMember { injectMember {
// method { method {
// name = "test" name = "test"
// returnType = StringType returnType = StringType
// } }
// replaceTo("这段文字已被 Hook 成功") replaceTo("这段文字已被 Hook 成功")
// } }
// injectMember { injectMember {
// method { method {
// name = "test" name = "test"
// param(StringType) param(StringType)
// returnType = StringType returnType = StringType
// } }
// beforeHook { args().set("方法参数已被 Hook 成功") } beforeHook { args().set("方法参数已被 Hook 成功") }
// } }
// } }
// InjectTest::class.java.hook { InjectTest::class.java.hook {
// injectMember { injectMember {
// constructor { param(StringType) } constructor { param(StringType) }
// beforeHook { args().set("构造方法已被 Hook 成功") } beforeHook { args().set("构造方法已被 Hook 成功") }
// } }
// } }
// findClass(name = "$packageName.InjectTestName").hook { findClass(name = "$packageName.InjectTestName").hook {
// injectMember { injectMember {
// constructor { param(StringType) } constructor { param(StringType) }
// beforeHook { args().set("构造方法已被 Hook 成功 [2]") } beforeHook { args().set("构造方法已被 Hook 成功 [2]") }
// } }
// } }
// } }
// loadApp(name = "com.android.browser") { loadApp(name = "com.android.browser") {
// ActivityClass.hook { ActivityClass.hook {
// injectMember { injectMember {
// method { method {
// name = "onCreate" name = "onCreate"
// param(BundleClass) param(BundleClass)
// } }
// afterHook { afterHook {
// AlertDialog.Builder(instance()) AlertDialog.Builder(instance())
// .setCancelable(false) .setCancelable(false)
// .setTitle("测试 Hook") .setTitle("测试 Hook")
// .setMessage("Hook 已成功") .setMessage("Hook 已成功")
// .setPositiveButton("OK") { _, _ -> .setPositiveButton("OK") { _, _ ->
// Toast.makeText(instance(), "Hook Success", Toast.LENGTH_SHORT).show() Toast.makeText(instance(), "Hook Success", Toast.LENGTH_SHORT).show()
// }.show() }.show()
// } }
// } }
// injectMember { injectMember {
// member = hookClass.findMethod(name = "onStart") member = hookClass.findMethod(name = "onStart")
// afterHook { afterHook {
// Toast.makeText(instance(), "手动 Hook", Toast.LENGTH_SHORT).show() Toast.makeText(instance(), "手动 Hook", Toast.LENGTH_SHORT).show()
// } }
// } }
// } }
// } }
// } }
} }
} }