如何识别CFNetwork是否hook成功

我使用如下代码,成功在手机上安装了插件.但是不知道是否运行有效。想到过要查看syslog文件,但是使用openSSH + syslogd 能时时查看嘛,不知道思路对不对。现在就是想验证这个hook是否有效运行。希望大家提供几个思路。谢谢大家!

后期是想实现监听网络通信,并能在网页上时时现实,好像是用CocoaHTTPServer 和WebSocketServer神马的可以实现,目前正在研究

CFHTTPMessageRef (*original_CFHTTPMessageCreateRequest)(CFAllocatorRef alloc,CFIndex statusCode,CFStringRef statusDescription,CFStringRef httpVersion);
CFHTTPMessageRef replaced_CFHTTPMessageCreateRequest(CFAllocatorRef alloc,CFIndex statusCode,CFStringRef statusDescription,CFStringRef httpVersion)
{
   printf("http request is send\n");
   
   //NSLog("CFHTTPMessageCreateRequest: %s",httpVersion);
   NSLog(@"sss");

   return original_CFHTTPMessageCreateRequest(alloc,statusCode,statusDescription,httpVersion);
}
%ctor
{
  MSHookFunction((void *)CFHTTPMessageCreateRequest,(void *)replaced_CFHTTPMessageCreateRequest,(void * *)&original_CFHTTPMessageCreateRequest);
}

假设你编译的dylib名为ABC.dylib;
那么ssh到iOS中并输入:
grep ABC.dylib /var/log/syslog
如果有形如

MS:Notice: Loading: /Library/MobileSubstrate/DynamicLibraries/ABC.dylib

的字样出现,则说明dylib被加载了;

把你的NSLog(@"sss")改成NSLog(@"comtex: sss")
启动App后执行
grep "comtex :sss" /var/log/syslog
有输出的话,则说明dylib成功运行了

1 个赞

好的 我试一下! 谢谢!

我也在做这个。开源的。一起填坑?

太好了!来研究一下

大致要干的事情咱都差不多。具体目标不一样,你要感兴趣的话CoreFoundation我就交给你了 : )
没中文文档有问题的话跟我说哦

咱这个日志系统各方面都比较完善,应该比你从头写强 : )

最近在做研究生的毕业设计,跟WTFJH的部分工作有重叠,虽然很想跟大神一起合作,但是时间紧迫啊,眼前毕业要紧。 给自己的deadline是3个月。
目前也还是在学习和摸索阶段。希望毕设完成后,还能有机会加入大神的项目,那时技术应该也更为成熟。

谦虚谦虚了我才本科第一年

学无先后,达者为师