带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

results matching ""

    No results matching ""