Xposed框架动态调试第三方APP—实战演示

关于Xposed是什么及原理,这里不多说,网上一搜一大把。这里只讲干货。
下面讲的适用于有一定Android开发经验的开发人员。
仅用于开发学习用,严禁挪作他用!

注:后附demo apk安装包。

素材准备:
1、root后的Android机一台;
2、下载XposedInstaller.apk,安装到root后的手机,用于作为动态调试容器。之后开发出来的xposed hook插件要添加进这个容器后才能hook第三方应用。下载地址:链接:https://pan.baidu.com/s/1EAGoAbJo8nRFJZwXqsip3A 密码:gszz
3、准备XposedBridgeApi.jar包,可以从官网下载:
[XposedBridgeApi-54官方下载地址]https://forum.xda-developers.com/attachment.php?s=5903ce1b3edb1032faba7292b21e1801&attachmentid=2748878&d=1400342298
或在下面自己写的XposedDemo工程中的build.gradle文件中引入xposed依赖包,如下图:
4、Android开发环境及工具。这里使用Android studio。provided 'de.robv.android.xposed:api:82'
创建自己的XposeDemo框架工程,步骤如下:
1、创建空项目,名叫XposedDemo
2、在build.gradle中添加核心依赖包:provided ‘de.robv.android.xposed:api:82’
3、编写hook类,hook第三方应用的功能方法,更该请求参数、响应值等实现动态调试。前提是事先确定好第三方应用的包名——类名——方法名,例如:我的要hook的第三方应用代码如下:
在这里插入图片描述
下面进入重点——编写动态调试代码,实现对goLogin的篡改,不管输入pwd为何止,使goLogin永远返回true,从而越过第三方应用的登录密码校验。
4、hook代码类如下:

public class HookLogin implements IXposedHookLoadPackage {
    private static final String PACKAGE_NAME = "com.mscf.finance";

    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
        Log.i(Contants.TAG, "xposeddemo--进入我的hook-----~~");

        if (lpparam.packageName.equals(PACKAGE_NAME)) {
            Log.i(Contants.TAG, "包名存在!");
        } else {
            Log.i(Contants.TAG, "com.mscf.finance--包名不存在!");
            return;
        }
        //固定格式
        findAndHookMethod(
                "com.mscf.finance.activity.Aty_Login",  //要hook的包名+类名
                lpparam.classLoader,                   //classLoader固定
                "goLogin",                         //要hook的方法名
//                int.class,//方法参数 没有就不填
                new XC_MethodHook() {
                    @Override
                    //此函数在执行被hook函数前调用,用来修改入参
                    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                        Log.i(Contants.TAG, "进入beforeHookedMethod---");
                    }

                    //方法执行后执行,改方法的返回值一定要在方法执行完毕后更改
                    protected void afterHookedMethod(MethodHookParam param)
                            throws Throwable {
                        Log.i(Contants.TAG, "进入afterHookedMethod---");

                        //修改返回值为true,越过登录密码验证
                        param.setResult(true);
                        String result = param.getResult() + "";
                        Log.i(Contants.TAG, "afterHood输出结果---" + result);
                    }
                }
        );

    }
}

5、配置hook启动入口:在工程目录的main/assets/下新建文件xposed_init 复制以下内容到文件:

com.zp.xposeddemo.HookLogin

注意该目录即自己的包名+hook类名。

6、运行功能XposedDemo到root后的手机上,桌面多了一个名叫MyXposeDemo的应用。如此一个动态调试登录事件的hook插件开发出来了。
7、将MyXposeDemo添加进XposedInstaller容器中。

  • 打开XposedInstaller容器,先进行激活。网上搜 xposedInstaller激活教程一大把。这里不做重点讲。
  • 激活后如下图:
  • 在这里插入图片描述
  • 点击左侧菜单,选择模块,勾选我们的XposedDemo,然后重启手机设备。
    在这里插入图片描述
  • 重启后后,点击被hook的第三方APP,执行登录,输入任何值,都提示“登录成功”。完活!

总结:
最后回顾整个流程,其实主要就是基于Xposed依赖包开发了一个篡改登录功能的插件。在afterHookedMethod方法中修改被hook住的方法名,篡改其返回值,实现登录功能越过。
在这里插入图片描述
附上实战体验demo:下载链接:https://pan.baidu.com/s/1-fdOgNQfTSPJ8hLVIjMcRA 密码:9fcb
切记:手机需要root后再安装上述demo,体验。

Xposed动态调试是一种在Android系统中使用Xposed框架的方法,通过该方法可以实现对第三方应用程序的动态调试和修改。Xposed框架是一个基于Android系统的插件框架,它允许开发人员在不修改应用程序源代码的情况下对应用程序进行修改和扩展。动态调试是指在应用程序运行过程中对其进行修改和调试的过程,可以用于改变应用程序的行为、增加新功能或者调试应用程序的问题。 在使用Xposed框架进行动态调试时,首先需要安装Xposed Installer应用程序。然后,需要下载并安装Xposed模块,可以通过Xposed官方网站或者其他来源获取适用的模块。安装完毕后,需要在Xposed Installer应用程序中激活所安装的模块,并重启设备以使其生效。 完成上述步骤后,就可以使用Xposed框架进行动态调试了。具体的操作方法包括创建Hook入口类、设置Xposed模块的配置信息和实现具体的Hook逻辑。通过Hook逻辑,可以拦截并修改应用程序的方法调用、改变应用程序的行为,甚至篡改应用程序的界面。这样就可以实现对第三方应用程序的动态调试和修改。 总之,Xposed动态调试是一种基于Xposed框架的方法,可用于实现对第三方应用程序的动态调试和修改。通过安装Xposed Installer应用程序和相应的Xposed模块,并设置和实现Hook逻辑,可以对应用程序进行拦截、修改和调试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值