特別感謝www.52pojie.cn/thread-6847…
安裝了xposed後你的手機就可以自動搶微信,qq紅包了,還有可以搜尋最近很多的答題app答案。
下面以抖音去Toast為例子,教你如何製作一個xposed外掛。
首先安裝了xposed框架後,抖音會在framework檢測到XposedBridge.jar檔案,就會提示檢測到Xposed,要求刪除xposed install。
思路是通過jadx開啟抖音1.7.2版本。在resource-resource.arsc-res-values-strings.xml.查詢到
<string name="a_9">檢測到你使用%s,請解除安裝後重試</string>
複製程式碼
再次全域性搜尋a_9在哪裡被引用 找到package com.ss.android.ugc.aweme.app.b.a的g類,我們要做就是替換到裡面的a方法。
在AndroidManifest.xml,新增是否為xposed專案,xposed描述,最小的xposed版本
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ppjun.android.xposedbytedance">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="xposedmodule"
android:value="true" />
<meta-data
android:name="xposeddescription"
android:value="@string/app_desc" />
<meta-data
android:name="xposedminversion"
android:value="53" />
</application>
</manifest>
複製程式碼
首先在app/build.gradle
provided 'de.robv.android.xposed:api:82'
provided 'de.robv.android.xposed:api:82:sources'
複製程式碼
然後建立類HookLogic,實現IXposedHookLoadPackage介面,實現它的handleLoadPackage方法。
if (lpparam.packageName.equals(DOUYIN_PAKCAGENAME)) {
/**
* 相容douyi不同版本之間,方法名不同
*/
findAndHookMethod(HOOK_METHOD_I, lpparam.classLoader, TARGET_METHOD, XC_MethodReplacement.returnConstant(null));
findAndHookMethod(HOOK_METHOD_G, lpparam.classLoader, TARGET_METHOD, XC_MethodReplacement.returnConstant(null));
}
複製程式碼
因為xposed原理是替換了android的zygote程式,需要重啟才能替換。 這裡使用github.com/shuihuadx/X… 能讓你的手機不重啟就可以讓xposed程式碼生效。
需要在建立HookLoader類。 最後為了讓xposed知道外掛的入口,要在assets資料夾下建立xposed_init指向你的HookLoader,規則是包名+類名(com.ppjun.android.xposedbytedance.HookLoader) 然後就可以安裝在你的手機上。
注意as預設開啟instant run,多次修改程式碼後,xposed install日誌會顯示ClassNotFindException的,這個xposed的issue有提到。 第一次安裝,要重啟手機才能讓HookLoader程式碼生效。
專案地址github.com/gdmec071207… 最後釋出外掛的時候需要改為com.ppjun.android.xposedbytedance.HookLogic 減少效能消耗