//不需要区分修饰符,也不需要区分静态和实例方法,hook代码的写法都是一样的image.png

    //函数参数和返回值的修改

    1. var money = Java.use("com.dudu.hook.Money");
    2. var str = Java.use("java.lang.String");
    3. money.getInfo.implementation = function () {
    4. var result = this.getInfo();
    5. console.log("money.getInfo result: ", result);
    6. return str.$new("dudu");
    7. //上述字符串"dudu"是JS的string,而被hook的Java方法返回值是Java的String
    8. //因此,可以主动调用Java方法转成Java的String
    9. //但是为了方便起见,通常会直接直接返回JS的string,这时frida会自动处理,代码类似如下
    10. //return "dudu";
    11. //Java的类型可以调用Java的方法,JS的类型可以调用JS的方法
    12. //区分清楚何时是Java的类型,何时是JS的类型,有助于代码的编写
    13. //frida在参数传递的处理上也类似
    14. }