谁能帮助我如何在Android设备上用frida钩住java.net.Socket.connect(java.net.SocketAddress,int)

时间:2019-05-15 09:54:28

标签: android frida

我想用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将崩溃。

1 个答案:

答案 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);
   };
});
"""