想要使用frida调用一个java fun(byte[])
类型的方法,返回值类型也是byte[]
,但是当运行时会报错 TypeError: Object of type bytes is not JSON serializable
经分析发现是在json.dump()
时发生了错误。那改如何使byte在python和js之间传递呢?
我这里采用的方法是使用 byte和hex转换来进行传递,列举一下转换方法
第一步:python发送参数 — bytesToHexString
//如果想从string到hex先转byte
byte_data = bytes('ss-android', encoding='utf-8')
def bytesToHexString(bs):
return ''.join(['%02X ' % b for b in bs])
第二步:js接受参数 ---- hexStringTobytes
for (var bytes = [], c = 0; c < hex.length; c += 2){
bytes.push(parseInt(hex.substr(c, 2), 16));
}
第三步:js返回结果 ---- bytesToHexString
for (var hexRes = [], i = 0; i < res.length; i++) {
var current = res[i] < 0 ? res[i] + 256 : res[i];
hexRes.push((current >>> 4).toString(16));
hexRes.push((current & 0xF).toString(16));
}
第四部:python接收结果 — hexStringTobytes
def hexStringTobytes(str):
str = str.replace(" ", "")
return bytes.fromhex(str)