Java.perform(function() { var URL = Java.use("java.net.URL"); var HttpsURLConnection = Java.use("javax.net.ssl.HttpsURLConnection"); var HttpURLConnection = Java.use("java.net.HttpURLConnection"); var OutputStreamWriter = Java.use("java.io.OutputStreamWriter"); var BufferedReader = Java.use("java.io.BufferedReader"); var InputStreamReader = Java.use("java.io.InputStreamReader"); var OutputStream = Java.use('java.io.OutputStream'); var OkHttpClient = Java.use('okhttp3.OkHttpClient'); URL.$init.overload('java.lang.String').implementation = function(url) { console.log("[*] URL init:", url.toString()); return this.$init(url); }; HttpsURLConnection.setDoOutput.implementation = function(value) { console.log("[*]HttpsURLConnection setDoOutput:", value); return this.setDoOutput(value); }; HttpsURLConnection.setRequestProperty.implementation = function(key, value) { console.log("[*] setRequestProperty:", key, value); return this.setRequestProperty(key, value); }; HttpsURLConnection.getOutputStream.implementation = function() { console.log("[*] getOutputStream"); return this.getOutputStream(); }; HttpURLConnection.setRequestProperty.implementation = function(key, value) { console.log("[*] setRequestProperty:", key, value); return this.setRequestProperty(key, value); }; HttpURLConnection.setDoOutput.implementation = function(value) { console.log("[*]HttpURLConnection setDoOutput:", value); return this.setDoOutput(value); }; // HttpURLConnection.getOutputStream.implementation = function() { // console.log("[*] getOutputStream"); // var outputStream = this.getOutputStream(); // // outputStream.write.overload('[B').implementation = function(buffer) { // console.log("[*] Data written:", Java.array('byte', buffer).toString()); // return this.write(buffer); // }; // return outputStream; // }; // OutputStream.write.overload('[B').implementation = function(buffer) { // console.log("[*] Data written:", Java.array('byte', buffer).toString()); // return this.write(buffer); // }; BufferedReader.readLine.overload().implementation = function() { var line = this.readLine(); // console.log("[*] BufferedReader.readLine:", line); return line; }; InputStreamReader.$init.overload('java.io.InputStream').implementation = function(stream) { console.log("[*] InputStreamReader.init:", stream); return this.$init(stream); }; OkHttpClient.newCall.overload('okhttp3.Request').implementation = function(request) { console.log("[*] Request URL:", request.url().toString()); console.log("[*] Request Headers:", request.headers().toString()); if (request.method() == "POST") { console.log("[*] Request Body:", request.body().toString()); } return this.newCall(request); }; });