想通过后台捕获相关屏幕点击事件,运行报段错误

实现功能:想通过后台捕获相关屏幕点击事件
硬件平台:iphone5c ios7.1.2
相关问题:执行这行代码void ioHIDEventSystem = IOHIDEventSystemClientCreate(kCFAllocatorDefault);报段错误,请帮忙分析一下,是什么原因?
详细代码如下:
#include <IOHIDEventSystem.h>
void handle_event (void
target, void* refcon, IOHIDServiceRef service, IOHIDEventRef event)
{
if (IOHIDEventGetType(event)==kIOHIDEventTypeDigitizer)
{
IOHIDFloat x=IOHIDEventGetFloatValue(event, (IOHIDEventField)kIOHIDEventFieldDigitizerX);
IOHIDFloat y=IOHIDEventGetFloatValue(event, (IOHIDEventField)kIOHIDEventFieldDigitizerY);
int width = [UIScreen mainScreen] bounds].size.width;
int height = [UIScreen mainScreen] bounds].size.height;
NSLog(@“click : %f, %f”, xwidth, yheight) ;
}
}

int main ()
{
printf(“111111111111111111111111111\n”);
sleep(3);
void *ioHIDEventSystem = IOHIDEventSystemClientCreate(kCFAllocatorDefault);
printf(“2222222222222222222222222\n”);
IOHIDEventSystemClientScheduleWithRunLoop(ioHIDEventSystem, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
printf(“33333333333333333333333333\n”);
IOHIDEventSystemClientRegisterEventCallback(ioHIDEventSystem, handle_event, NULL, NULL);

CFRunLoopRun();

return 1;
}

syslog里输出什么?你的这些printf和NSLog有输出吗?

只输出了111111111111111111111111111,就报段错误了!

printf应该没问题,sleep应该也没问题,那就是IOHIDEventSystemClientCreate的问题了?你在这个函数上下各加一个printf,看看是不是它的问题。
另:你全统一成NSLog吧,方便

群主按你的要求加了打印消息,可以确定就是执行如下语句:
void *ioHIDEventSystem = IOHIDEventSystemClientCreate(kCFAllocatorDefault);
报段错误,会是什么情况?

还有别的方案吗?

程序上有问题吗?

你可以看看SimulateTouch这个开源库,就是模拟点击的;Cydia中我印象也有现成的记录点击的插件,你可以逆了看看

从群主的帖子找到SimulateTouch在github上下载下来自行编译,一开始有些头文件找不到,按提示找到相关头文件,然后再编译(使用theos编译),还是报一些错,是什么原因啊?困拢两天了!

你把substrate.h更新到最新再试试看