利用Android Studio编写一个简单的Xposed框架文件

一、编写相应的文件内容

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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值