hook all java method overloads
This commit is contained in:
parent
2a210509c6
commit
2067de23a4
47
README.md
47
README.md
@ -37,6 +37,7 @@
|
|||||||
* [`Get Android ID`](#get-android-id)
|
* [`Get Android ID`](#get-android-id)
|
||||||
* [`Bypass FLAG_SECURE`](#bypass-flag_secure)
|
* [`Bypass FLAG_SECURE`](#bypass-flag_secure)
|
||||||
* [`Shared Preferences update`](#shared-preferences-update)
|
* [`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`
|
* File system access hook `$ frida --codeshare FrenchYeti/android-file-system-access-hook -f com.example.app --no-pause`
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
@ -1186,6 +1187,52 @@ TODO
|
|||||||
<br>[⬆ Back to top](#table-of-contents)
|
<br>[⬆ 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');
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Output example</summary>
|
||||||
|
TODO
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<br>[⬆ Back to top](#table-of-contents)
|
||||||
|
|
||||||
|
|
||||||
#### iOS alert box
|
#### iOS alert box
|
||||||
|
|
||||||
```js
|
```js
|
||||||
|
Loading…
Reference in New Issue
Block a user