注:本文章仅供学习使用,请勿用做其他商业用途,如有侵权,请联系本人。
看参数,使用了bsae64编码 。反编译看下,这里我使用是jadx-gui。搜索参数"d="。
进入方法。
进入setEncrypt方法。
看到明显RC4key,Base64,应该是RC4加密后,base64编码,最后URL编码。
使用xp,frida hook的通杀,没有RC4这个,不行。手动写代码了。
import frida
import sys
jscode = """
Java.perform(function () {
var SwitchConfig = Java.use('XXX.EncryptUtil');
SwitchConfig.setEncrypt.overload('java.lang.String','int').implementation = function(a,b){
//showStacks()
send(arguments[0])
send(arguments[1])
var skey = this.setEncrypt(a,b)
send(skey)
return skey
}
})
Java.perform(function () {
var SwitchConfig = Java.use('XXX.Utils.EncryptUtil');
SwitchConfig.RC4Base.overload('[B','java.lang.String').implementation = function(a,b){
//showStacks()
send(arguments[0])
send(arguments[1])
var skey = this.RC4Base(a,b)
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()
设备要装好frida,手机frida-server。
参数,key,结果都hook到了。



