如何将字典参数从 Python 传递给 Frida RPC JavaScript 函数?

How to pass a dict parameter from Python to Frida RPC JavaScript function?

我想将 dict 传递给 RPC,这是我的 agent.js:

rpc.exports = {
    signrequesturlwithparameters: function (param_dict,secret,signMethod) { 
    var result=ObjC.classes.GSNetworkUtils.signRequestUrlWithParameters_secret_signMethod_(param_dict,secret,signMethod);
    return String(ObjC.classes.NSString.stringWithString_(result));
    }
};

RPC 调用示例;

script.load()
signrequesturlwithparameters= getattr(script.exports, 'signrequesturlwithparameters')
_dict={"imsi":"46001","device_model":"iPhone7,2"}
secret="93AA27467E8"; 
signMethod="md5";
a=signrequesturlwithparameters(_dict,secret,signMethod)
print(a)

有一个错误,我可以从 Python 传递一个字典给 JavaSript RPC 函数吗?我应该如何修改 Python 或 JavaScript 代码以使其工作?

更新: 我试过JSON.parse,但是frida的javascript好像不能用JSON。另外一个问题是当我想给[=15=传递一个可变参数dict时,我应该如何使用setObject_forKey_("key1","value1")?我想我应该解析 frida javascript 中的可变参数 dict,然后我尝试将 str(dict) 从 python 传递给 frida javascript 并尝试将字符串 dict 解析为 dict in frida javascript 和 ObjC.classes.NSJSONSerialization,更多细节是 here,但仍然失败,你能帮我吗?

您可以在 py 端使用 json.dumps 和在 JS 端使用 JSON.parse,但我认为您的问题是@ signRequestUrlWithParameters_secret_signMethod_ 我不认为它期待 JSON 但是NSDictionary 或类似的东西。

var NSDict = ObjC.classes.NSMutableDictionary.alloc().init();   
NSDict.setObject_forKey_("key1", "value1");     
NSDict.setObject_forKey_("key2", "value2");
signRequestUrlWithParameters_secret_signMethod_(NSDict, ...);