Android关于Xposed使用[逆向]

 

一.安装xposed安装器

建议下载安卓模拟器(夜神模拟器等),在模拟器中测试使用,避免因为xposed的安装导致手机变砖;

xposed安装器下载

下载安装器之后,打开安装器,选择框架 > 安装更新,根据提示进行操作,安装完成之后显示一下界面:

二.写代码

创建xposed相关模块,先创建一个项目,我这里包名为"cn.xpx.xpx";

引入xposed相关联的库文件,这个版本很多,方法也有很多,有的下载jar包什么的,我这里引荐官方的方法,通过gradle引入相关库.

    compileOnly 'de.robv.android.xposed:api:82'

有兴趣的朋友可以去github的wiki里面详细查看,附网址

下载相关库文件之后,就开始写我们自己的代码了:

以MainActivity为例,抓取startAc()方法修改页面TextView显示的内容;

    public String startAc() {
        return "Hello";
    }

原方法返回一个字符串"Hello",我的TextView拿到之后设置成这个字符串.

        TextView textView = findViewById(R.id.lll);
        textView.setText(startAc());

接下来创建一个类XpostedUt.class,名字随意取,该类要实现IXposedHookLoadPackage接口,实现其中的handleLoadPackage()方法,在这个方法中就可以去hook内容了;

public class XPostedUt implements IXposedHookLoadPackage {
    @Override
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
        XposedHelpers.findAndHookMethod("cn.xpx.xpx.MainActivity",loadPackageParam.classLoader, "startAc", new XC_MethodHook() {
            @Override
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {

            }
            @Override
            protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                param.setResult("BaiBaiLe");
            }
        });
    }
}

这里的afterHookedMethod()方法是在被hook的方法之后调用的,param.setResult()是把方法的返回结果修改为你填入的值,这部分具体的api我后面再整理出一个文档来;

写好这个方法之后,在与java同级的目录中创建assets静态资源文件夹,创建一个文件xposed_init,文件名必须为这个,这个配置文件用来设定你定义的hook类所在的位置,我这里填入的是cn.xpx.xpx.XPostedUt.

在你的配置文件中,添加三个配置文件:

        <meta-data
            android:name="xposedmodule"
            android:value="true"/>
        <meta-data
            android:name="xposeddescription"
            android:value="xpDemo"/>
        <meta-data
            android:name="xposedminversion"
            android:value="82"/>

此时,运行项目,你会在xposed > 模块中看到你的模块;

注意,到这里还没有完成,如果你就这样运行了,那么恭喜你,你会看到xposed模块,也可以启动它,但就是不生效(当然也可能生效),如果不生效了,就要去配置一个东西,官方里面是这样写的:

Please make sure to disable Instant Run 
(File -> Settings -> Build, Execution, Deployment -> Instant Run),
 otherwise your classes aren't included directly in the APK, 
but loaded via a stub application which Xposed can't handle.

配置好之后,重新启动,然后根据提示重启测试机即可;

三.Hook多个方法

多个方法的话,经过测试,只要在xposed_init中写上你创建的实现IXposedHookLoadPackage接口的类的全包名即可,每个实现IXposedHookLoadPackage接口的类可以针对不同的方法,类等进行操作;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值