frida - hook socket inputstream in android apk

Viewed 1830

I found InputStream hook code here! but I add below code in android, then try to hook it with the frida script, it's not been triggered:

Java code (SocketDemo.apk):

  InputStream ios = sock.getInputStream();
  int len = ios.read(dataBuf);

frida script.js:

function buf2hex(array, readLimit) {
    var result = [];
    var ascii = ""
    readLimit = readLimit || array.length;
    for (var i=0; i<readLimit;++i) {
        var elem = array[i] & 0xFF
        var str = (0x100 + elem).toString(16).substr(1)
        result.push(str);

        if (elem < 127 && elem >= 32) {
            ascii += String.fromCharCode(elem)
        } else {
            ascii += "."
        }
    }
    return result.join(' ') + " | " + ascii
}

function hookInputStream() {
    Java.use('java.net.Socket')['connect'].overload('java.net.SocketAddress').implementation = function(sockaddr) {
        console.log("connect")
        var retval = this.connect(sockaddr)
        return retval
    }
    Java.use('java.io.InputStream')['read'].overload('[B').implementation = function(data) {
        var retval = this.read(data)
        console.log("----" + data.length)
        var hexstr = buf2hex(data)
        console.log(hexstr)
        return retval
    }
}

Java.perform(hookInputStream);

command:

frida -Uf com.example.socketdemo -l script.js --no-pause
0 Answers
Related