frida 在主动调用一个函数时报错。我是完全初学者,不知怎么解决。

frida 在主动调用一个函数时报错。我是完全初学者,不知怎么解决。


  Java.choose("com.chillyroom.sdk.agent.PingXXPayAgent", {
            onMatch: (i) => {
                
                a.sendPaySuccess()
                console.log();

            }, onComplete: () => { }
        })

可以看到我只是单纯的调用这个函数,并没有修改它的实现


Error: sendPaySuccess(): argument types do not match any of:
        .overload('java.lang.String', 'java.lang.String', 'java.lang.String')
    at X (frida/node_modules/frida-java-bridge/lib/class-factory.js:622)
    at value (frida/node_modules/frida-java-bridge/lib/class-factory.js:1141)
    at e (frida/node_modules/frida-java-bridge/lib/class-factory.js:606)
    at onMatch (c:\Users\DealD\Desktop\hook.js:13)
    at _chooseObjectsArtLegacy (frida/node_modules/frida-java-bridge/lib/class-factory.js:376)
    at <anonymous> (frida/node_modules/frida-java-bridge/lib/class-factory.js:303)
    at kt (frida/node_modules/frida-java-bridge/lib/android.js:586)

我试着去搜索原因,但无功而返。搜到的都是叫你如何在修改函数实现时遇到重载怎么办。
请教各位

【以下回答由 GPT 生成】

回答:

根据错误信息看,调用的sendPaySuccess函数需要传入三个字符串参数。你可以按照下面的方式来尝试修复这个问题:

  1. 首先,确定sendPaySuccess函数需要的参数类型和顺序。可以通过查看代码或者文档来获取这些信息。

  2. 在调用sendPaySuccess函数之前,准备好三个字符串参数。

  3. 修改你的代码,将三个字符串参数传递给sendPaySuccess函数。下面是一个示例代码:

```javascript Java.choose("com.chillyroom.sdk.agent.PingXXPayAgent", { onMatch: function(i) { // 准备三个字符串参数 var param1 = "参数1"; var param2 = "参数2"; var param3 = "参数3";

       // 调用sendPaySuccess函数,并传入参数
       i.sendPaySuccess(param1, param2, param3);
   },
   onComplete: function() {}

}) ```

  1. 运行修改后的代码,并观察是否还会出现错误。如果没有错误,说明问题解决了。如果还有其他问题,请提供更多的错误信息,以便进一步协助解决。

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^