Я нашел здесь код ловушки 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