一、编写相应的文件内容
1、首先在app目录下面新建一个lib文件夹,注意不能直接使用libs文件夹,将XposedBridgeApi-**.jar文件复制到lib文件目录下面,然后点击鼠标右键,选择Add As Library选项。(XposedBridgeApi-54.jar下载链接:https://pan.baidu.com/s/1pFfsmtpZVz1v8loO1W9XWg 提取码:ovdf)
并去项目目录下面build.gradle文件最后修改相应的文件内容implementation files(‘lib/XposedBridgeApi-54.jar’)改为compileOnly files(‘lib/XposedBridgeApi-54.jar’)。
2、在app/src/main目录下面创建assets文件夹,在此文件夹下面创建文本文件xposed_init,在里面编写内容指定了module的入口类。
com.example.xposed.Main//com.example.xposed为包名,Main就是要编写的内容。
在AndroidMannifest.xml当中加入以下模块内容:
<meta-data
android:name="xposedmodule"
android:value="true"/>
<meta-data
android:name="xposeddescription"
android:value="Xposed example"/>
<meta-data
android:name="xposedminversion"
android:value="54"/> //XposedBridgeApi-54.jar的版本号
这样由Xposed框架就能“认识”我们所编写的内容是一个Xposed的模块。
3、接下来就编写hook文件。
新建一个Java文件,编写如下代码:
public class Main implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
if (lpparam.packageName.equals("com.example.xposed")) {
XposedHelpers.findAndHookMethod(TelephonyManager.class, "getDeviceId", new XC_MethodReplacement() {
@Override
protected Object replaceHookedMethod(MethodHookParam param) throws Throwable {
return "this is cainiaoxiaomanong";
}
});
XposedHelpers.findAndHookMethod(TelephonyManager.class, "getSubscriberId", new XC_MethodReplacement() {
@Override
protected Object replaceHookedMethod(MethodHookParam param) throws Throwable {
return "this is imsi";
}
});
}
}
}
在新建一个Activity设置一个界面。
设置XML文件
<LinearLayout
android:id="@+id/firstSupspend"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:ignore="MissingConstraints">
<TextView
android:id="@+id/tv1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:textSize="30sp"
tools:ignore="MissingConstraints" />
<TextView
android:id="@+id/tv2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
tools:ignore="MissingConstraints"
android:textSize="20sp"/>
</LinearLayout>
相对应的文件代码为:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView tv1 = (TextView) findViewById(R.id.tv1);
final TextView tv2 = (TextView) findViewById(R.id.tv2);
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
tv1.setText("imei: "+tm.getDeviceId());
tv2.setText("imsi: "+tm.getSubscriberId());
}
}
也就是通过两个方法:getDeviceId()与getSubscriberId()两个方法,返回相应的内容,并在Activity当中进行显示。
二、运行结果
安装之后重启设备进行激活。
这是一个最为简单的Xposed监听模型。
本文代码的下载地址:https://download.csdn.net/download/qq_40282557/12598163