抓个包看看, 提交参数加密了,Encrypt。上jadx,看看。
一般都是搜索参数名,Encrypt,或"Encrypt"。
DesMap,可能是DES加密。跟入进去。
这有个KEY,IV,应该大差不差了。 继续跟。
用frida hook一下这个encodeDesMap,看看。
import frida import sys jscode = """ Java.perform(function () { var SwitchConfig = Java.use('XXX.util.Utils'); SwitchConfig.md5.overload('java.lang.String').implementation = function(a){ //showStacks() send(arguments[0]) var skey = this.md5(a) send(skey) return skey } }) Java.perform(function () { var SwitchConfig = Java.use('XXX.http.RequestUtil'); SwitchConfig.encodeDesMap.overload('java.lang.String','java.lang.String','java.lang.String').implementation = function(a,b,c){ //showStacks() send(arguments[0]) send(arguments[1]) send(arguments[2]) var skey = this.encodeDesMap(a,b,c) send(skey) return skey } }) """ def on_message(message, data): if message['type'] == 'send': print("[*] {0}".format(message['payload'])) else: print(message) process = frida.get_remote_device().attach('XXX') script = process.create_script(jscode) script.on('message', on_message) script.load() sys.stdin.read()
打印出了加密参数,key,iv,结果。 参数参数还有个sign,md5。
hook一下md5,打印明文参数 。
标准的java层DES。 hook一下KEY,IV,看看。
结果一致。