APM-如何实现Socket监控

socket介绍

        socket是系统提供用于网络通信的方法,它并不是一个协议但是很多协议间的通信数据是通过socket中方法来传递数据的,目前在APP中用的最多就是即时通讯和直播,这两年比较火的直播的音视频数据就是通过socket传递的,有RTMP协议和Http-flv协议,如果有想了解这两个协议的可以在下面留言,之后我会介绍如何进行直播监控使用代码解析这两个协议,这篇文章主要介绍socket监控实现。

        在iOS中socket有两种,一种是c层的socket.h中纯C的写法,还有就是CFNetwork中的CFSocket,这两种方式在iOS中可以杂在一起使用导致socket创建的方式有很多种。

socket监控

        其实监控原理都是大同小异的都会使用hook机制,运行时动态替换将原方法替换成一个新方法,参数和原来方法相同,AOP编程和swizzle就是普通的hook,接下来介绍的就是不同于这两种机制的hook。        

        对于C方法的监控我们需要借助于facebook提供的一个工具fishhook,fishhook的实现是利用iOS中Mach-o的编译原理,使用内存地址的偏移来替换原有的方法,至于如何实现的这里就不讲了,网上有很多资料特别是iOS安全攻防中讲的特别详细,我们这里来说说如何使用。

首先我们需要定义一下静态方法,静态方法的参数和你需要监控方法参数一样。

定义静态方法

再定义一个开关方法open,然后使用fishhook提供的rebind_symbols函数进行hook,替换成一想要实现功能的方法,open这个方法可以在appdelegate的didFinishLaunchingWithOption中调用,实现全局监控。

最终替换成想要实现功能的方法

        最后在这个函数中,有返回值的你需要将返回值return回调回去,connect方法的返回值是int值,需要用静态方法传递参数获取返回值回调。这中和AOP切面编程还有swizzle一样了,只是上面的实现步骤不一样,最后你就可以在my_connect中实现你想要做的事,获取IP、端口号、链接错误等等,当然不止这些,一些协议层的数据分析也可以通过这些方法来监控,至少这样就能做到socket的监控了。

实现功能

说了这么多,不了解使用的小伙伴可能还是不清楚,我写了个demo,我把github代码链接发在这里,觉得对你有用的话请给个星星。

https://github.com/LonelyWise/SocketMonitor.git

       运行的时候最好使用真机,原因是在模拟器上网络请求会走socket就会导致模糊,但是在真机上苹果系统就会将系统的和网络请求的给屏蔽了,不主动调用就不会运行到socket。

如果有对直播协议感兴趣的的可以私聊我,我接下来会写一下关于RTMP和http-flv协议层数据的解析,也是基于本篇文章socket监控的基础,对APM有兴趣的也可以私聊我,一起探讨。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,165评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,503评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,295评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,589评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,439评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,342评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,749评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,397评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,700评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,740评论 2 313
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,523评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,364评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,755评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,024评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,297评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,721评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,918评论 2 336

推荐阅读更多精彩内容