带overload的ctor函数
举例:
去hook带overload的ctor函数=init函数:
对于:
String (Java Platform SE 8 ) (oracle.com)
的:
- Constructor=ctor=构造函数=初始化函数=init函数
public String(String original)String(byte[] bytes, Charset charset)String(byte[] bytes, String charsetName)
核心写法是:
var func_String_ctor = cls_String.$init.overload('java.lang.String')var func_String_ctor_2pbc = cls_String.$init.overload('[B', 'java.nio.charset.Charset')var func_String_ctor_2pbs = cls_String.$init.overload('[B', 'java.lang.String')
核心代码是:
static String(func_isShowLog=null) {
/******************** java.lang.String ********************/
var className_String = "java.lang.String"
// FridaAndroidUtil.printClassAllMethodsFields(className_String)
var cls_String = Java.use(className_String)
console.log("cls_String=" + cls_String)
// public String(String original)
var func_String_ctor = cls_String.$init.overload('java.lang.String')
// var func_String_ctor = cls_String.getInstance.overload('java.lang.String')
// var func_String_ctor = cls_String.$new.overload('java.lang.String')
console.log("func_String_ctor=" + func_String_ctor)
if (func_String_ctor) {
func_String_ctor.implementation = function (original) {
...
this.$init(original)
return
}
}
// String(byte[] bytes, Charset charset)
//
var func_String_ctor_2pbc = cls_String.$init.overload('[B', 'java.nio.charset.Charset')
console.log("func_String_ctor_2pbc=" + func_String_ctor_2pbc)
if (func_String_ctor_2pbc) {
func_String_ctor_2pbc.implementation = function (bytes, charset) {
...
this.$init(bytes, charset)
var newString_2pbc = this
console.log(`newString_2pbc=${newString_2pbc}`)
return
}
}
// String(byte[] bytes, String charsetName)
//
var func_String_ctor_2pbs = cls_String.$init.overload('[B', 'java.lang.String')
console.log("func_String_ctor_2pbs=" + func_String_ctor_2pbs)
if (func_String_ctor_2pbs) {
func_String_ctor_2pbs.implementation = function (bytes, charsetName) {
...
this.$init(bytes, charsetName)
var newString_2pbs = this
console.log(`newString_2pbs=${newString_2pbs}`)
return
}
}
}
完整代码详见:
https://github.com/crifan/JsFridaUtil/blob/main/frida/FridaHookAndroidJava.js