软件条件:ios 9.3
问题描述:ios 网络结构最底层是基于BSD的socket,Core Fundation 层的网络调用最终都是通过 OS 层的socket来实现,Unix系统中客户端TCP三次握手的函数只有connect一个,使用facebook的fishhook对connect进行hook,上层使用AFNetworking进行http请求,hook connect 没有执行,为了验证hook函数没有写错,手动写了一行代码connect,hook成功,证明hook函数是对的。问题就是,ios系统是不是自己修改了底层的unix系统,三次握手没有使用标准的connect?

解决方案 »

  1.   

    使用 dlsym 获取 connect符号。。  还是不行的话,试试:hook connectx。。 我在7.1.2上,connect是可以的。
      

  2.   


    你可以看看:netcat的实现,对socket的用法:https://opensource.apple.com/source/netcat/netcat-20/netcat.c 
      

  3.   

    你可以看看:netcat的实现,对socket的用法:https://opensource.apple.com/source/netcat/netcat-20/netcat.c 
      

  4.   

    兄弟,有没有好的解决方法,我是AFNetworking发的请求,通过fishhook来hook socket的C函数connect,然后手机模拟器是可以hook到的,但是用真机测试,就hook不到了。