playboy 发表于 2022-6-11 18:05

8.1.5 Xposed Hook-multiDex(第六十课)

以下为图文内容:

8.1.5 Xposed Hook-multiDex
0x01 multiDex介绍
在一个app项目开发完毕后,我们需要将class字节码文件通过dx工具转为dex,当
我们的方法数超过65535的时候,就会分包处理,分成多个dex。两款app的dex对比
如图所示:

而我们之前使用的findAndHookMethod()获取类的方法只会在classes.dex中进行
Hook,而现在我们Hook的大型app的方法数量都会超过65535个方法,也就是都会进
行分包处理,因此我们需要先Hook另外的一个方法Application.attach方法来帮助我们
进行多dex的Hook.
0x02 Hook multiDex代码分析
Application这个类的加载时间是早于MainActivity下的oncreate方法,因此我们
通过Hook该类下的attach方法,它有一个参数Context,根据这个Contex可以获取
到所有的dex的类加载器,从而根据这个类加载器可以获取到所有dex中的方法。
详细代码如下:
package com.xposed;
import android.app.Application;
import android.content.Context;
import android.util.Log;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XC_MethodReplacement;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;
public class Hook implements IXposedHookLoadPackage {
public void handleLoadPackage(final LoadPackageParam lpparam) throws
Throwable {
//Application.class 类名 "attach" 该类下的方法, 加载dex 的方法
Context该方法的参数 new XC_MethodHook()实例化的对象
XposedHelpers.findAndHookMethod(Application.class, "attach",
Context.class, new XC_MethodHook() {
protected void afterHookedMethod(MethodHookParam param) throws
Throwable {
//param.args获取参数Context的上下文 getClassLoader()类加载器
ClassLoader cl = ((Context)param.args).getClassLoader();
Class<?> hookclass = null;
try {
//通过类加载器去加载类
hookclass = cl.loadClass("com.feichen.xposeddemo.Demo");
} catch (Exception e) {
Log.e("feichen===================", " 寻找
com.feichen.xposeddemo.Demo报错", e);
return;
}
Log.i("feichen===================", " 寻找
com.feichen.xposeddemo.Demo成功");
XposedHelpers.findAndHookMethod(hookclass,
"test",
new XC_MethodReplacement(){
@Override
protected Object replaceHookedMethod(MethodHookParam
param)
throws Throwable {
//添加打印查找到该方法的堆栈信息
Log.i("feichen===================", " 寻找
com.feichen.xposeddemo.test成功",new Throwable("stack dump"));
return null;
}
});
}
});
}
}
然后运行后的截图如下:

在天一方 发表于 2022-6-12 21:44

谢谢分享

天使替我爱你 发表于 2022-6-12 23:05

大佬讲的真好谢谢

ak47110 发表于 2022-6-13 22:07

天天学习

Wayne 发表于 2022-6-14 08:28

别管我了行 发表于 2022-6-16 01:05

风里去 发表于 2022-6-16 09:03

谢谢分享,我要好好学习

男同在身边 发表于 2022-6-28 12:21

谢谢分享!!!

素衣少年 发表于 2022-8-11 16:20

感谢版主的分享,我一定好好学习。

素衣少年 发表于 2022-8-11 16:55

厉害受教了
页: [1] 2
查看完整版本: 8.1.5 Xposed Hook-multiDex(第六十课)