Xposed插件开发(一)简单demo

来源:互联网 发布:淘宝刷几单封号 编辑:程序博客网 时间:2024/06/01 10:35

Xposed插件开发(一)简单demo

xposed下载地址:http://repo.xposed.info/module/de.robv.android.xposed.installer
xposed开发包源码:https://github.com/rovo89/XposedBridge.git
xposed简易demo:https://github.com/rovo89/XposedExamples.git


准备阶段

新建android工程,只需要修改三个地方,就可以开发xposed插件了:
导入XposedBridgeApi.jar
我这边图省事直接将demo中lib文件拷贝到当前工程中了

这里写图片描述

Androidmanifest.xml 没有activity也不要紧。

    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <!-- 增加三个meata-data -->        <meta-data            android:name="xposedmodule"            android:value="true" />        <meta-data            android:name="xposeddescription"            android:value="make a Simcard id" />        <meta-data            android:name="xposedminversion"            android:value="30" />    </application>

在assets中添加xposed_init文件
xposed_init文件记录xposed插件处理类,文件写入格式为:包名+类名
这里写图片描述

简单demo

由于某app需要获取sim卡才能运行,这边准备利用xposed伪造一份simcard id绕过去。
代码放在gihub:https://github.com/saidyou/com.saidyou.xposed.simcard.git
这里写图片描述

package com.saiyou.xposed.simcard;import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;import android.telephony.TelephonyManager;import de.robv.android.xposed.IXposedHookLoadPackage;import de.robv.android.xposed.XC_MethodHook;import de.robv.android.xposed.XposedBridge;import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;public class Simcard  implements IXposedHookLoadPackage {    public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {        // TODO Auto-generated method stub        XposedBridge.log(lpparam.packageName + " [Simcard]");                   // sim is usefully      findAndHookMethod(TelephonyManager.class.getName(),lpparam.classLoader,"getSimState",new XC_MethodHook(){            @Override            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {                // TODO Auto-generated method stub                super.beforeHookedMethod(param);            }            @Override            protected void afterHookedMethod(MethodHookParam param) throws Throwable {                // TODO Auto-generated method stub                super.afterHookedMethod(param);                //TelephonyManager.SIM_STATE_READY 5                param.setResult(TelephonyManager.SIM_STATE_READY);            }               });             // get sim id       findAndHookMethod("android.telephony.TelephonyManager",lpparam.classLoader,"getSubscriberId",new XC_MethodHook(){            @Override            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {                // TODO Auto-generated method stub                //super.beforeHookedMethod(param);                param.setResult("11111111111111111111111111");            }               });         }}
原创粉丝点击