Frida如何构造一个地址参数

需求: hook一个oc方法,该方法有个参数是地址,如何对这个方法进行传参

**代码:
OC方法:

-[DBTool encStrWithData:error:]
// 调用方式应该是
NSError *error;
[tool encStrWithData:data error:&error];

data是一个正常的参数没有问题,error是一个地址

我是这样写的

function encrypt2(inputstr) {
    log_debug('+[DBTool encStrWithData:error:] begin hook...');

    var msg = ObjC.classes.NSString.stringWithString_(inputstr);
    console.log("msg2: " + msg);
    var msg_data = msg.dataUsingEncoding_(4);
    console.log("--------------------");
    console.log("msg_data2: " + msg_data);
    console.log("--------------------");

    var myDBTool = ObjC.classes.DBTool.alloc();
    // 0x1031728a8是随意写的一个地址
    var res = myDBTool['- encStrWithData:error:'].call(msg_data, ptr(0x1031728a8));
    console.log("--------------------");
    console.log("res2: " + res);
    console.log("--------------------");
    return res;

}

操作步骤:

    msg_byte = b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe8\xa6\x81\xe7\x94\xa8python'
    msg = str(msg_byte, 'utf-8')
    rpc.encrypt2(msg)

报错:

frida.core.RPCException: Error: expected a pointer
    at m (<input>:1)
    at call (native)
    at encrypt2 (/script1.js:172)
    at encrypt2 (/script1.js:200)
    at apply (native)
    at <anonymous> (frida/runtime/message-dispatcher.js:13)
    at c (frida/runtime/message-dispatcher.js:23)

看出我传的地址出问题了,所以请问,这个入参应该怎么构建呢?

额外的一个问题:如果这个error是个block,那又该如何构建这个参数呢?

大佬们帮忙解惑。 谢谢!

大佬们帮帮忙 :100:

来一个大佬

意思是我的DBTool没有init? 但是从报错看应该不是这个原因哦

frida.core.RPCException: Error: expected a pointer

这个是hook的时候可以截获这个block,我的意图是要重新构建一个