letFridaActivity5 = Java.use("com.example.androiddemo.Activity.FridaActivity5");
FridaActivity5["getDynamicDexCheck"].implementation = function () {
console.log(`FridaActivity5.getDynamicDexCheck is called`);
let res=this["getDynamicDexCheck"]().$className;
let result = this["getDynamicDexCheck"]();
console.log(`FridaActivity5.getDynamicDexCheck result=${res}`);
return result;
};
this.DynamicDexCheck = (CheckInterface) new DexClassLoader(
str, // 动态加载的 dex 文件路径
cacheDir.getAbsolutePath(), // 存放解压后的优化文件的缓存目录
null, // 加载依赖的库文件路径(这里为 null)
getClassLoader() // 父类加载器,用于委托加载机制
).loadClass(
"com.example.androiddemo.Dynamic.DynamicCheck" // 要加载的类的全限定名
).newInstance();
Java.enumerateClassLoaders({
onMatch: function (str) {
console.log(str);
},onComplete: function () {
},
});
Java.enumerateClassLoaders({
onMatch: function (str) {
try {
if (str.findClass('com.example.androiddemo.Dynamic.DynamicCheck')) {
console.log(str);
Java.classFactory.loader = str;
}
} catch (e) {}
},
onComplete: function () {},
});
letCheckInterface = Java.use("com.example.androiddemo.Dynamic.DynamicCheck");
console.log(CheckInterface)
CheckInterface["check"].implementation = function () {
returntrue;
};
functiontest2() {
Java.perform(function () {
letFridaActivity5 = Java.use(
'com.example.androiddemo.Activity.FridaActivity5',
);
FridaActivity5['getDynamicDexCheck'].implementation = function () {
console.log(`FridaActivity5.getDynamicDexCheck is called`);
let res = this['getDynamicDexCheck']().$className;
let result = this['getDynamicDexCheck']();
console.log(`FridaActivity5.getDynamicDexCheck result=${res}`);
return result;
};
Java.enumerateClassLoaders({
onMatch: function (str) {
try {
if (str.findClass('com.example.androiddemo.Dynamic.DynamicCheck')) {
console.log(str);
Java.classFactory.loader = str;
}
} catch (e) {}
},
onComplete: function () {},
});
letCheckInterface = Java.use(
'com.example.androiddemo.Dynamic.DynamicCheck',
);
console.log(CheckInterface);
CheckInterface['check'].implementation = function () {
returntrue;
};
});
}
· 今 日 推 荐 ·
原文始发于微信公众号(逆向有你):安卓逆向2025 -- Frida学习之hook案例(六)
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论