0

我想使用 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就会崩溃。

4

1 回答 1

0

尝试在函数connect体中添加返回。我试过了,它有效。

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);
   };
});
"""
于 2020-09-01T02:56:02.467 回答