对xPosed框架中的方法运用与解析-资源布局替换与插入

在逆向开发时,除了对类方法的反射,还有对资源布局的替换与插入,主要用到:IXposedHookInitPackageResources,IXposedHookZygoteInit

        好了,进入主题

        ① 替换某apk中的资源,如:图片,文字,数值

@Override
public void handleInitPackageResources(XC_InitPackageResources.InitPackageResourcesParam resparam) throws Throwable {
    if (TARGET_PACKAGE.equals(resparam.packageName)) {
        resparam.res.setReplacement(0x90c009f, "客户");
    }
}

        ②对某apk中的布局进行插入View

@Override
public void handleInitPackageResources(XC_InitPackageResources.InitPackageResourcesParam resparam) throws Throwable {
    if (TARGET_PACKAGE.equals(resparam.packageName)) {
        resparam.res.hookLayout(TARGET_PACKAGE, "layout", "dialer_list_call_normal_item", new XC_LayoutInflated() {
            @Override
            public void handleLayoutInflated(LayoutInflatedParam liparam) throws Throwable {
                RelativeLayout simpleItem = (RelativeLayout) liparam.view;
                LinearLayout topLineLinear = (LinearLayout) simpleItem.findViewById(0x90e00e6);
                if (topLineLinear != null) {
                    LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) topLineLinear.getLayoutParams();
                    topLineLinear.requestLayout();
                    ImageView sexImageView = new ImageView(simpleItem.getContext());
                    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(lp.height, lp.height);
                    params.leftMargin = 10;
                    sexImageView.setLayoutParams(params);
                    sexImageView.setContentDescription("性别");
                    sexImageView.setId(sexImageResId);
                    topLineLinear.addView(sexImageView, 1, params);
                }
            }
        });
    }
}

            ③向某apk插入新图片或者新布局

private static String MODULE_PATH = null;

@Override
public void initZygote(StartupParam startupParam) throws Throwable {
    MODULE_PATH = startupParam.modulePath;
}

@Override
public void handleInitPackageResources(XC_InitPackageResources.InitPackageResourcesParam resparam) throws Throwable {
    if (TARGET_PACKAGE.equals(resparam.packageName)) {
        XModuleResources modRes = XModuleResources.createInstance(MODULE_PATH, resparam.res);
        sexBoyImageResId = resparam.res.addResource(modRes, R.drawable.boy);
        sexGrilImageResId = resparam.res.addResource(modRes, R.drawable.boy);
    }
}

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
xposed-v7.1-sdk25-x86.zip是一个针对Android系统的软件框架文件。Xposed框架是一个开源项目,可以在不修改系统APK文件的情况下改变系统和应用程序的行为。xposed-v7.1-sdk25-x86.zip的v7.1表示框架的版本号,sdk25表示该框架适用于Android 7.1版本的开发工具包,而x86表示该框架适用于基于x86架构的处理器。 使用xposed-v7.1-sdk25-x86.zip,我们可以在Android系统实现各种定制化和优化的功能。通过安装该框架,我们可以在不修改应用程序源代码的情况下,通过加载和运行特定模块来修改应用程序的行为。这些模块可以实现例如更改应用程序界面、增加额外的功能、去除广告等等。同时,xposed-v7.1-sdk25-x86.zip提供了一个非常方便的开发环境,使开发者能够轻松创建和调试自己的模块。 要安装xposed-v7.1-sdk25-x86.zip,首先需要确保你的设备已经root权限。然后,将该框架文件通过适当的方法(如刷机)安装到设备的系统分区。安装完成后,重启设备并安装Xposed Installer应用程序,该应用程序将允许你管理和加载模块。 总结来说,xposed-v7.1-sdk25-x86.zip是一个强大的Android系统软件框架,可以通过加载模块来修改和定制应用程序和系统的行为,提供了方便的开发环境供开发者创造自己的模块。但要注意,在使用之前确保你的设备已经root,并且安装过程需要相应的技术和操作技巧。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值