我想用Frida钩住android应用程序中的java.net.Socket.connect()方法。但是我失败了,应用程序崩溃了。
我正在使用具有Android 7.1.1和frida-server-12.2.27-android-arm的Nexus 6设备。
这是我使用的js代码:
jscode = """
Java.perform(function(){
var target = Java.use("java.net.Socket");
target.$init.overload().implementation = function(){
return this.$init();
};
target.connect.overload('java.net.SocketAddress', 'int').implementation = function(socketAddr, timeout) {
this.connect(socketAddr, timeout);
};
});
"""
我发现,如果仅挂接$ init()方法,则一切正常。但是,如果我添加方法connect()的钩子,则APP将崩溃。
答案 0 :(得分:0)
尝试在函数connect
的正文中添加return。我试过了,可以用。
jscode = """
Java.perform(function(){
var target = Java.use("java.net.Socket");
target.$init.overload().implementation = function(){
return this.$init();
};
target.connect.overload('java.net.SocketAddress', 'int').implementation = function(socketAddr, timeout) {
return this.connect(socketAddr, timeout);
};
});
"""