Xposed如何植入自己编写的java代码文件或jar库

整体步骤如下

1.编写代码编译jar,转换成成dex文件

2.将dex文件放在指定文件目录

3.DexClassLoader 合并 dex文件

4.DexClassLoader 找到新的类并使用

java编写逻辑代码生成jar

简单的代码:

package com.test.huruwo;

public class Test {
    public static String test() {
        return "鎴戞槸琚悎骞剁殑dex";
    }
}

buid生成jar文件

jar转换成dex

进入sdk/build-tools/27.0.3目录 输入命令以下命令

dx  --dex --output jar.dex dex.jar 

jar.dex是输出文件名,dex.jar是需要转换的jar包的名字

转换完成 复制dex文件到系统根目录下

DexClassLoader合并dex生成新的

private Context mContext;private volatile ClassLoader mLoader = null;

private String INTERCEPTORPATH = "/storage/emulated/0/ui.dex";


XposedHelpers.findAndHookMethod(Application.class, "attach",
                Context.class,
                new XC_MethodHook() {
                    @Override
                    protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                        super.afterHookedMethod(param);
                            mContext = (Context) param.args[0];
                            mLoader = mContext.getClassLoader();
                            File dexOutputDir = mContext.getDir("dex", 0);
                            // 定义DexClassLoader
                            // 第一个参数:是dex压缩文件的路径
                            // 第二个参数:是dex解压缩后存放的目录
                            // 第三个参数:是C/C++依赖的本地库文件目录,可以为null
                            // 第四个参数:是上一级的类加载器
                            DexClassLoader mDexClassLoader = new DexClassLoader(INTERCEPTORPATH, dexOutputDir.getAbsolutePath(), null, mLoader);
                            //寻找合并的class
                            Class findCls =   mDexClassLoader.loadClass("com.test.huruwo.Test");
                            if(findCls!=null){
                                LogXUtils.e(XposedHelpers.callStaticMethod(findCls,"test").toString());
                            }else {
                                LogXUtils.e("未找到合并的dex");
                            }
                    }
                });




测试打印合并结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ON8UfnCd-1635837812411)(en-resource://database/1006:1)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值