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;
}
});
}
});
}
}
然后运行后的截图如下:
谢谢分享 大佬讲的真好谢谢 天天学习 谢谢分享,我要好好学习 谢谢分享!!! 感谢版主的分享,我一定好好学习。 厉害受教了
页:
[1]
2