cycript如何调用C函数,已知地址

请问怎么在cycript里面通过地址调用函数啊

  • (void *)dowork:(uintptr_t)adress

{

int (*p)(int,int);

uintptr_t mainASLR = _dyld_get_image_vmaddr_slide(0);

NSLog(@"\nmainASLR —> 0x%lx\n",mainASLR);

uintptr_t sumAddress = mainASLR + adress;

p = sumAddress;

int result = (*p)(7,2);

printf("\n-------->%d\n",result);

}
目前就先写了一个OC封装通过地址调用C函数,然后再在cycript实现调用。

cy# [hookframe dowork:0x1000062ac]

请问有大佬能直接在cycript中实现吗,不然参数不同每次都要定义
int (*p)(int ,int );
这个类型,很不方便

理论上不行。但你可以把常用函数的签名写进cy自带的签名数据库里.
需要声明这玩意是因为libFFI必须知道函数原型。具体跟调用协定啥的有关了