shlu's note

前言

开始讲解获取方法


        var module_libart = Process.findModuleByName("libart.so");
        var symbols = module_libart.enumerateSymbols();

        for (var i = 0; i < symbols.length; i++) {
            var symbol = symbols[i];
            var address = symbol.address;
            var name = symbol.name;
             console.log(name);
            if (name.indexOf("FindMethodIDERNS") > -1) {
                Interceptor.attach(address, {
                    onEnter: function (args) {
                        try {
                            var methodName = tool.Memory.readCString(args[2])
                            console.log('find method:', methodName);
                            if (methodName.indexOf('buf2Resp') > -1) {
                                console.log('[native stack]\n' +
                                    Thread.backtrace(this.context, Backtracer.ACCURATE)
                                        .map(DebugSymbol.fromAddress).join('\n') + '\n');
                            }
                        } catch (error) {
                            console.log(error);
                        }
                    }, onLeave: function (retval) {
                    }
                });

            }
        }

声明:转载请注明出处,原文地址:shlu's note