Java.perform(() => { const readField = function(className, field, instance) { const f = Java.use(className).class.getDeclaredField(field); f.setAccessible(true); return f.get(instance); } Java.use('com.gigya.android.sdk.network.adapter.HttpNetworkProvider$GigyaNetworkAsyncTask').doInBackground .overload('[Lcom.gigya.android.sdk.api.GigyaApiHttpRequest;') .implementation = function(requests) { const res = this.doInBackground(requests); let out = ""; [...requests].forEach((request, i) => { Java.perform(() => { out += "-----------------------------------\n"; out += request.getHttpMethod() + " " + request.getUrl().toString() + "\n" + request.getHeaders()?.toString() + "\n" + request.getEncodedParams() + "\n" ; out += ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"; const resp = Array.isArray(res) ? [...res][i] : res; out += "code: " + resp.getCode() + "; " + "result: " + readField("com.gigya.android.sdk.network.adapter.HttpNetworkProvider$AsyncResult", "result", resp) + "\n"; out += "-----------------------------------"; }); }) console.log(out); return res; }; Java.use('com.gigya.android.sdk.session.SessionInfo').$init .overload('java.lang.String', 'java.lang.String', 'long') .implementation = function(sessionSecret, sessionToken, expirationTime) { console.log("new SessionInfo(sessionSecret: " + sessionSecret + ", sessionToken: " + sessionToken + ", expirationTime: " + expirationTime); return this.$init(sessionSecret, sessionToken, expirationTime); }; Java.use('com.gigya.android.sdk.utils.SigUtils').getSignature .implementation = function(str, str2, str3, map) { console.log("SigUtils.getSignature(" + "\nstr: " + str + "\n, str2: " + str2 + "\n, str3: " + str3 + "\n, map: " + map); return this.getSignature(str, str2, str3, map); }; });