demo
frida-rpc通过调用已加载到内存中的函数,直接获取到结果:
import fridardev = frida.get_remote_device()
session = rdev.attach("大姨妈")scr = """rpc.exports = { encrypt(j2, str){var res;Java.perform(function () {var Crypt = Java.use("com.yoloho.libcore.util.Crypt"); res = Crypt.encrypt_data(j2, str);});return res;}}"""
script = session.create_script(scr)
script.load()sign = script.exports.encrypt(0,"38a6b024user/login8GGjp1eHdaK4e22QpCp0kfg==")
print(sign)
解释:在最外层使用rpc.exports导出了encrypt方法的定义,所以在script.exports里就能调用encrypt方法。
类型的处理
在执行frida-rpc时,会涉及到参数类型的处理和转换:
在python中给frida的JavaScript脚本传入参数时,一般有如下几种情况:
-
字符串/整型/浮点型等直接传递
import fridardev = frida.get_remote_device() session = rdev.attach("大姨妈") scr = """ rpc.exports = { encrypt:function(v1,v2,v3,v4,v5){console.log(v1,ty