本节接上一节课,APP进入第五关。
本节知识点为hook动态dex:
观察代码可以发现关键判断点处 getDynamicDexCheck() 的 check()方法在代码中无法找到。
根据代码发现在getDynamicDexCheck为null时会动态加载dex文件。
首先我们要捋一下访问动态dex的流程:
1、使用选择器choose主动调用方法名(本例:getDynamicDexCheck),并获取方法的类名.$className
2、 利用enumerateClassLoaders遍历所有的类加载器
3、使用findClass在遍历时找到对应的className名称的类
4、使用Java.classFactory加载器加载实例
5、此时的类可以正常hook
代码如下:
function hook_dyn_dex(){
//hook 动态dex
Java.perform(function(){
var FridaActivity5 = Java.use("com.example.androiddemo.Activity.FridaActivity5");
Java.choose("com.example.androiddemo.Activity.FridaActivity5",{
onMatch:function(instance){
console.log(instance.getDynamicDexCheck().$className);