使用frida和java脚本hook受保护的APK遇到attach()错误
Using frida and java script to hook protected APK encountered attach( ) error
我使用以下 java 脚本在 frida (windows 7) 中学习挂钩。
Java.perform(function () {
console.log("prepare hook...");
var application = Java.use("android.app.Application");
console.log("get application...");
application.attach.overload("android.app.Context").implementation = function(Context){
console.log("get context...");
var classloader = Context.getClassLoader();
Java.classFactory.loader = classloader;
console.log("get classloader");
}
});
我想在本练习中做的是获取受保护 APK 的 class 加载程序。在 frida -R -f com.xxxx.xxx -l myjs1.js 中,弹出 attach( ) 参数类型错误:
我的 java 脚本有什么问题以及如何修复它?非常感谢。
您正在尝试挂钩一个不存在的方法。
您尝试挂钩的内容:
android.app.Application.attach(android.app.Context)
此 class 中唯一的 attach
方法具有签名
android.app.Application.attach(android.content.Context)
如果您正在尝试使用 Context 进行访问,这里是使其有效的替代方法
Java.perform(function () {
var context = Java.use('android.app.ActivityThread').currentApplication().getApplicationContext();
console.log("get context...");
var classloader = context.getClassLoader();
Java.classFactory.loader = classloader;
console.log("get classloader");
});
只需删除应用程序实现。
我使用以下 java 脚本在 frida (windows 7) 中学习挂钩。
Java.perform(function () {
console.log("prepare hook...");
var application = Java.use("android.app.Application");
console.log("get application...");
application.attach.overload("android.app.Context").implementation = function(Context){
console.log("get context...");
var classloader = Context.getClassLoader();
Java.classFactory.loader = classloader;
console.log("get classloader");
}
});
我想在本练习中做的是获取受保护 APK 的 class 加载程序。在 frida -R -f com.xxxx.xxx -l myjs1.js 中,弹出 attach( ) 参数类型错误:
您正在尝试挂钩一个不存在的方法。
您尝试挂钩的内容:
android.app.Application.attach(android.app.Context)
此 class 中唯一的 attach
方法具有签名
android.app.Application.attach(android.content.Context)
如果您正在尝试使用 Context 进行访问,这里是使其有效的替代方法
Java.perform(function () {
var context = Java.use('android.app.ActivityThread').currentApplication().getApplicationContext();
console.log("get context...");
var classloader = context.getClassLoader();
Java.classFactory.loader = classloader;
console.log("get classloader");
});
只需删除应用程序实现。