Xposed Xposed插件開發

Xposed插件開發

簡單介紹
Xposed,大名鼎鼎得Xposed,是Android平臺上最負盛名的一個框架。在這個框架下,我們可以加載很多插件App,這些插件App可以直接或間接操縱系統層面的東西,比如操縱一些本來只對系統廠商才open的功能(實際上是因爲Android系統很多API是不公開的,而第三方APP又沒有權限)。有了Xposed後,理論上我們的插件APP可以hook到系統任意一個Java進程。

開發準備
編譯器我最初用AndroidStudio+Gradle環境發現不行,後來想了一下,應該是不能用Gradle環境的。於是就用IDEA+MAVEN創建工程,然後再導入AndroidStudio編譯的。
首先要給測試機root+刷rec|twrp+安裝XposedInstaller,然後用XposedInstaller下載卡刷Xopsed框架卡刷包,然後在rec中刷進去。第一次開機會有點久,安裝成功之後測試機就準備好了。
然後是jar包:百度搜,下載XposedBridgeApi-54.jar,在工程目錄新建lib文件夾,把下載的jar包放進去。然後右鍵工程-OpenModuleSetting 把lib以addjar文件夾的形式加入進來。注:不可用工程默認的libs目錄,一定要自己創建lib目錄使用。
接下來是AndroidManifest.xml
在application中添加:

<meta-data
            android:name="xposedmodule"
            android:value="true" />
        <meta-data
            android:name="xposeddescription"
            android:value="介紹" />
        <meta-data
            android:name="xposedminversion"
            android:value="56" />

創建xposed類,來寫代碼吧

import android.telephony.TelephonyManager;

import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XSharedPreferences;
import de.robv.android.xposed.callbacks.XC_LoadPackage;

import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;

/**
 * Created by zhaoyong on 2016/5/14.
 */
public class XposedTest implements IXposedHookLoadPackage {

    /* (non-Javadoc)
     * @see de.robv.android.xposed.IXposedHookLoadPackage#handleLoadPackage(de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam)
     */

    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
        hookPhoneinfo(loadPackageParam);
    }

    private void hookPhoneinfo(final XC_LoadPackage.LoadPackageParam lpparam) {

        //getDeviceId
        findAndHookMethod(TelephonyManager.class.getName(), //包名類名
        lpparam.classLoader, //不用管 這樣寫就好
        "getDeviceId", //方法名
        new XC_MethodHook() {
            @Override
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                //在該方法執行前調用
            }

            @Override
            protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                super.afterHookedMethod(param);
                //在該方法執行之後調用
                //給改方法自定義返回值
                param.setResult("自定義返回值");
            }
        });
    }

}

接下來創建assets目錄,創建文件xopsed_init,以本文文檔的形式創建,不要加.txt後綴,裏面寫

com.xxx.xxx.xxx.XposedTest

完成的包名類名路徑

完成,運行安裝,激活,重啓搞定。
關於如何保存自定義配置,看我的另一個Xposed保存SP的文章。

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