奥数大师 发表于 2020-3-24 22:38:46

frida的问题请教下小肩膀老师

本帖最后由 奥数大师 于 2020-3-24 22:39 编辑

看完frida的第11,12课,尝试写了下枚举所有类然后hook类的所有方法,结果发现报错


运行,前面的打印都没问题,后面无论点APP的哪个按钮都会报下面红色的错误

这是代码
function hookTmp() {
    Java.perform(function () {
      var classes = Java.enumerateLoadedClassesSync();
      for (var i = 0; i < classes.length; i++) {
            if (classes.indexOf("com.xiaojianbang.app") != -1) {
                var tmpClass = Java.use(classes);
                var methods = tmpClass.class.getDeclaredMethods();
                for (var j = 0; j < methods.length; j++) {
                  var tmpMethodName = methods.getName();
                  console.log(classes, tmpMethodName);
                  //到这里打印都是没问题的

                  for (var k = 0; k < tmpClass.overloads.length; k++) {

                        tmpClass.overloads.implementation = function () {
                            for (var p = 0; p < arguments.length; p++) {
                              //console.log(p,arguments);
                            }
                            return this.apply(this, arguments);//应该是这句return报错了
                        }

                  }



                }

            }



      }



    });


}

请教下这是哪里有什么问题吗



小肩膀 发表于 2020-3-24 22:38:47

    function hookAll(tmpClass, tmpMethodName){
      for (var k = 0; k < tmpClass.overloads.length; k++) {
            tmpClass.overloads.implementation = function () {
                for (var p = 0; p < arguments.length; p++) {}
                console.log(tmpMethodName);
                console.log(this);
                return this.apply(this, arguments);
            }
      }
    }
    Java.perform(function () {
      var classes = Java.enumerateLoadedClassesSync();
      for (var i = 0; i < classes.length; i++) {
            if (classes.indexOf("com.xiaojianbang.app") != -1) {
                var tmpClass = Java.use(classes);
                var methods = tmpClass.class.getDeclaredMethods();
                for (var j = 0; j < methods.length; j++) {
                  var tmpMethodName = methods.getName();
                  hookAll(tmpClass, tmpMethodName);
                }
            }
      }
    });   代码改了下 变量被覆盖了 所有undefined
页: [1]
查看完整版本: frida的问题请教下小肩膀老师