weixin_39602005
2021-01-10 23:34 阅读 11

How to hook socket or connect

Use fishhook in the simulator hook to connect and socket, but not in the iphone hook.

`static int (orig_socket)(int, int, int); static int (orig_connect)(int, const struct sockaddr , socklen_t); int my_socket(int domain, int type, int protocol) { printf("this is my socket!"); return orig_socket(domain,type,protocol);; } int my_connect(int socket, const struct sockaddr * addr, socklen_t len) { printf("this is my connect"); return orig_connect(socket,addr,len); } int main(int argc, char * argv[]) { { rebind_symbols((struct rebinding[2]){{"connect", my_connect, (void )&orig_connect},{"socket", my_socket, (void *)&orig_socket}}, 2); return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } }

`

该提问来源于开源项目:facebook/fishhook

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • weixin_39603995 weixin_39603995 2021-01-10 23:34

    People have had issues with socket and/or connect in the past. One problem is that fishhook can only hook external calls, which means function calls within the same library generally cannot be hooked. In this case, calls to socket and connect from within the same library (libSystem) cannot be hooked. With the simulator, the system libraries are broken out into many sub-libraries, including libsystem_networking. With many sub-libraries, this means function calls from one sub-library to another can be hooked on the simulator, but on device where there's just a single libSystem, those same calls are within the same library and cannot be hooked.

    点赞 评论 复制链接分享
  • weixin_39644139 weixin_39644139 2021-01-10 23:34

    Is there any inspiration how to hook connect in libSystem? inline hook can not work on un jailbreaking system. may be there is another way?

    点赞 评论 复制链接分享
  • weixin_39915171 weixin_39915171 2021-01-10 23:34
    Looking forward to yours, thinks
    
    点赞 评论 复制链接分享
  • weixin_39769039 weixin_39769039 2021-01-10 23:34

    +1

    点赞 评论 复制链接分享

相关推荐