抓个包看看, 提交参数加密了,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,看看。
结果一致。



