Android XPosed 詳細教程

Android XPosed 詳細教程

pexels-pixabay-358454.jpg

一、在 Android Studio創(chuàng)建一個 Module 選擇 Empty Activity

二、項目導(dǎo)入

app/build.gradle中配置

   dependencies {
    compileOnly 'de.robv.android.xposed:api:82'
}

三、在AndroidManifest.xml application節(jié)點下配置模塊信息

<!-- 是否是xposed模塊,xposed根據(jù)這個來判斷是否是模塊 -->
        <meta-data
            android:name="xposedmodule"
            android:value="true" />

        <!-- 模塊描述,顯示在xposed模塊列表那里第二行 -->
        <meta-data
            android:name="xposeddescription"
            android:value="測試Xposed模塊" />

        <!-- 最低xposed版本號(lib文件名可知) -->
        <meta-data
            android:name="xposedminversion"
            android:value="30" />

四、新建Hook

package com.knight.xposeddemo;

import android.telephony.TelephonyManager;

import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XC_MethodReplacement;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;

public class MyXposedModule implements IXposedHookLoadPackage {
    @Override
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {

        XposedBridge.log("開始--handleLoadPackage---");
        if (lpparam.packageName.equals("com.develop.test")) {
            XposedBridge.log("開始hook測試程序");

            //hook類調(diào)用方法
            XposedHelpers.findAndHookMethod(TelephonyManager.class, "getDeviceId", new XC_MethodReplacement() {
                @Override
                protected Object replaceHookedMethod(MethodHookParam param) throws Throwable {
                    return "momoxiaoming";
                }
            });
            //hook 類名+方法名所在方法
            XposedHelpers.findAndHookMethod("com.fancy.demo.ui.LoginActivity", lpparam.classLoader, "dexLoadTest", new XC_MethodHook() {
                @Override
                protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                    super.beforeHookedMethod(param);
                    XposedBridge.log("Hook后...");
                }

                @Override
                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                    super.afterHookedMethod(param);
                    XposedBridge.log("Hook前...");

                }
            });
        }
    }
}

五、在assets目錄下創(chuàng)建xposed_init文件

內(nèi)容填寫為上面的hook類的包名+類名

六、安裝程序

  1. 下載XpseInstall
  2. XpseInstall安裝測試程序和被測試程序

七、測試Hook

將程序和被hook的程序裝入手機,勾選Xpose模塊,重啟手機,點擊被hook程序按鈕,查看代碼是否已被攔截

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容