send
# -*- coding: UTF-8 -*-import fridaimport sysjsCode = """Java.perform(function(){var RequestUtil = Java.use('com.dodonew.online.http.RequestUtil');RequestUtil.encodeDesMap.overload('java.lang.String', 'java.lang.String', 'java.lang.String').implementation = function(a, b, c){console.log('data: ', a);console.log('desKey: ', b);console.log('desIV: ', c);var retval = this.encodeDesMap(a, b, c);send( retval);return retval;}var Utils = Java.use('com.dodonew.online.util.Utils');Utils.md5.implementation = function(a){console.log('MD5 string: ', a);var retval = this.md5(a);send( retval);return retval;}});"""def message_1(message, data):print(message)if message["type"] == 'send':print(u"[*] {0}".format(message['payload']))else:print(message)process = frida.get_device_manager().add_remote_device('IP:8888').attach('com.dodonew.online')script = process.create_script(jsCode)script.load()print("开始运行")script.on('message', message_1)sys.stdin.read()
send的作用就是把js的处理结果发送回Python端,实现交互;
注意,send传入的参数只能是一个;
post/recv
这两个的作用就是把Python的处理结果发送给js,实现交互;
# -*- coding: UTF-8 -*-import fridaimport sysjsCode = """Java.perform(function(){var RequestUtil = Java.use('com.dodonew.online.http.RequestUtil');RequestUtil.encodeDesMap.overload('java.lang.String', 'java.lang.String', 'java.lang.String').implementation = function(a, b, c){console.log('data: ', a);console.log('desKey: ', b);console.log('desIV: ', c);var retval = this.encodeDesMap(a, b, c);send( retval);return retval;}var Utils = Java.use('com.dodonew.online.util.Utils');Utils.md5.implementation = function(a){console.log('MD5 string: ', a);var retval = this.md5(a);send( retval);recv(function(obj){retval =obj.data}).wait();return retval;}});"""def message_1(message, data):print(message)if message["type"] == 'send':print(u"[*] {0}".format(message['payload']))script.post({'data': "测试文本"})else:print(message)process =frida.get_usb_device().attach('com.dodonew.online')script = process.create_script(jsCode)script.load()script.on('message', message_1)print("开始运行")sys.stdin.read()
这里1我们把 “测试文本”四个字作为sign的返回值拿给js处理,成功的实现了交互
