From acff94d32b725c5a8443cc21f4e97dd195b1a7ec Mon Sep 17 00:00:00 2001 From: Fankesyooni Date: Wed, 9 Feb 2022 00:50:46 +0800 Subject: [PATCH] ... --- app/src/main/AndroidManifest.xml | 2 +- .../yukihookapi/demo/MainActivity.kt | 17 +- .../demo/hook/inject/MainInjecter.kt | 13 +- app/src/main/res/layout/activity_main.xml | 22 +- .../YukiHookXposedProcessor.kt | 1 + .../highcapable/yukihookapi/YukiHookAPI.kt | 9 + .../hook/factory/YukiHookFactory.kt | 7 + .../yukihookapi/hook/param/PackageParam.kt | 8 + .../hook/xposed/prefs/YukiHookModulePrefs.kt | 308 ++++++++++++++++++ 9 files changed, 375 insertions(+), 12 deletions(-) create mode 100644 yukihookapi/src/api/kotlin/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookModulePrefs.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5f999158..ea2048e3 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -23,7 +23,7 @@ + android:value="93" /> (R.id.main_button).setOnClickListener { + modulePrefs.apply { + putString("data", "这是存储的数据") + putBoolean("test_key", true) + putString("test_key_name", "存储数据成功,包名:$packageName") + } + Toast.makeText(this, "存储完成", Toast.LENGTH_SHORT).show() + } + // for test AlertDialog.Builder(this) .setTitle("Hook 方法返回值测试") - .setMessage(test() + "\n变量:$a\n模块是否已激活:${YukiHookModuleStatus.isActive()}") + .setMessage(test() + "\n变量:$a\n模块数据:${xptest()}\n模块是否已激活:${YukiHookModuleStatus.isActive()}") .setPositiveButton("下一个") { _, _ -> AlertDialog.Builder(this) .setTitle("Hook 方法参数测试") @@ -90,6 +101,10 @@ class MainActivity : AppCompatActivity() { @Keep private fun test() = "正常显示的一行文字" + // for test + @Keep + private fun xptest() = "这里是正常的文字" + // for test @Keep private fun test(string: String) = string 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 04998bbb..dcb50da1 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 @@ -70,6 +70,13 @@ class MainInjecter : YukiHookXposedInitProxy { }.set(instance, "这段文字被修改成功了") } } + injectMember { + method { + name = "xptest" + returnType = StringType + } + replaceTo(prefs.getString(key = "data", default = "获取 Hook:没数据")) + } injectMember { method { name = "toast" @@ -150,7 +157,11 @@ class MainInjecter : YukiHookXposedInitProxy { AlertDialog.Builder(instance()) .setCancelable(false) .setTitle("测试 Hook") - .setMessage("Hook 已成功") + .setMessage( + "Hook 已成功\n" + + "test_key:${prefs.getBoolean("test_key")}\n" + + "test_key_name:${prefs.getString("test_key_name", "默认值")}" + ) .setPositiveButton("OK") { _, _ -> Toast.makeText(instance(), "Hook Success", Toast.LENGTH_SHORT).show() }.show() diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 4fc24441..d9310287 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,18 +1,22 @@ - + android:gravity="center" + android:orientation="vertical" + tools:context=".MainActivity" + tools:ignore="HardcodedText"> + android:layout_marginBottom="10dp" + android:text="Hello World!" /> - \ No newline at end of file +