Xposed的基本使用方法

1.Xposed介紹和安裝

Xposed 是Android 系統兩大 Hook 框架之一,另一個 Cydia Substrate 主要面向 native 的 hook,而 Xposed 是面向 java 層的 hook。

它的使用非常的簡單,首先要在手機上安裝 Xposed(手機必須先 root),本實例使用的是Xposed Installer 3.1.4
官方的下載地址:http://repo.xposed.info/module/de.robv.android.xposed.installer
實際上 Xposed Installer 只是一個裝模塊的容器,只安裝一個 Xposed Installer 還是起不到 hook 的作用,核心 hook 的代碼都在編寫的模塊當中。Xposed Installer的安裝很簡單,只需要將 Xposed Installer 的apk 文件安裝到手機中即可。可以使用以下的命令安裝到手機。

adb install xxx/XposedInstaller_3.1.4-22.apk

2.Xposed模塊開發

安裝好 XposedInstaller 之後,需要使用 Xposed 官方提供的開發包進行模塊的開發。本文檔的文件夾中提供了一個 XposedBridgeAPI-54的 jar 包,它是 Xposed 官方最新的開發包。如果你需要了解開發包的最新版本更新,可以去官方下載:下載地址。
下面正式開始模塊開發。
1.在AS中新建項目
2.在app目錄下新建lib文件夾,將XposedBridgeAPI-54.jar放到該目錄下,右鍵Add As Library添加到項目中
在這裏插入圖片描述
3.修改build.gradle文件,將compile改爲provided,這樣這個庫就不會被編譯到dex文件中,修改後需要點一下彈出來的黃色橫條Sync Now
在這裏插入圖片描述
需要特別注意一下的是,這裏必須sync成功,否則函數是沒有提示的,因爲沒有將Xposed框架加載進去!
4.在AndroidManifest.xml文件中的application下添加如下代碼。

	<meta-data android:name="xposedmodule" android:value="true" />
	<meta-data android:name="xposeddescription" android:value="getColor的鉤子" />
	<meta-data android:name="xposedminversion" android:value="54" />

5.新建一個文件XposedEntry.java

	import android.util.Log;
	​
	import de.robv.android.xposed.IXposedHookLoadPackage;
	import de.robv.android.xposed.XC_MethodHook;
	import de.robv.android.xposed.callbacks.XC_LoadPackage;
	​
	import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;
	​
	​
	public class XposedEntry implements IXposedHookLoadPackage {
	    @Override
	    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
	        // log 不能寫中文
	        findAndHookMethod("android.content.res.Resources", loadPackageParam.classLoader,"getColor",int.class,new my_getColor());
	    }
	}
	class my_getColor extends XC_MethodHook {
	    protected void beforeHookedMethod(XC_MethodHook.MethodHookParam param) throws Throwable{
	        Log.d("Xposed Exaple","beforeHookedMethod");
	    }
	    protected void afterHookedMethod(XC_MethodHook.MethodHookParam param) throws Throwable{
	        Log.d("Xposed Exaple","afterHookedMethod");
	        int rel = (int)param.getResult();
	        rel = rel & ~0x0000ff00 | 0x00ff0000;
	        param.setResult(rel);
	    }
	}

6.最後在 main文件夾下新建assets文件夾,在裏面新建一個File文件,命名爲xposed_init。在裏面添加包名和入口名
在這裏插入圖片描述

com.example.a42033.myapplication.XposedEntry

3.安裝模塊

模塊開發好了以後,在 Android Studio 裏面運行,Xposed中的模塊區會自動識別出這個模塊,勾選這個模塊後重啓手機,hook 模塊就會生效。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章