From 2067de23a4d6a5de07b34926716c95edc86e469d Mon Sep 17 00:00:00 2001 From: iddoeldor Date: Thu, 2 May 2019 12:46:03 +0300 Subject: [PATCH] hook all java method overloads --- README.md | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/README.md b/README.md index c6f57e9..576a17a 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,7 @@ * [`Get Android ID`](#get-android-id) * [`Bypass FLAG_SECURE`](#bypass-flag_secure) * [`Shared Preferences update`](#shared-preferences-update) +* [`Hook all method overloads`](#hook-overloads) * File system access hook `$ frida --codeshare FrenchYeti/android-file-system-access-hook -f com.example.app --no-pause` @@ -1186,6 +1187,52 @@ TODO
[⬆ Back to top](#table-of-contents) + +#### Hook overloads + +```javascript +function hookOverloads(className, func) { + var clazz = Java.use(className); + var overloads = clazz[func].overloads; + for (var i in overloads) { + if (overloads[i].hasOwnProperty('argumentTypes')) { + var parameters = []; + + for (var j in overloads[i].argumentTypes) + parameters.push(overloads[i].argumentTypes[j].className); + + var args = []; + for (var i = 0; i < parameters.length; i++) + args.push('arg_' + i); + + var script = "var ret = this.__FUNCNAME__(__SEPARATED_ARG_NAMES__) || '';\n" + + "console.log('__CLASSNAME__.__FUNCNAME__(' + __SEPARATED_ARG_NAMES__ + ') : ' + ret);\n" + + "return ret;" + + script = script.replace(/__FUNCNAME__/g, func) + .replace(/__SEPARATED_ARG_NAMES__/g, args.join(', ')) + .replace(/__CLASSNAME__/g, className) + .replace(/\+ \+/g, '+'); + + args.push(script); + clazz[func].overload.apply(this, parameters).implementation = Function.apply(null, args); + } + } +} + +Java.perform(function() { + hookOverloads('java.lang.StringBuilder', '$init'); +}) +``` + +
+Output example +TODO +
+ +
[⬆ Back to top](#table-of-contents) + + #### iOS alert box ```js