frida - перехватить входной поток сокета в android apk - PullRequest
1 голос
/ 01 августа 2020

Я нашел здесь код ловушки InputStream ! но я добавляю ниже код в android, а затем пытаюсь подключить его с помощью скрипта frida, он не сработал:

Java код ( SocketDemo.apk ):

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

скрипт frida. 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);

команда:

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