【问题标题】:Hook iOS BSD socket connect method to get local and remote portHook iOS BSD 套接字连接方法以获取本地和远程端口
【发布时间】:2015-09-11 02:41:55
【问题描述】:

我尝试hook iOS socket connect方法来获取本地主机和远程服务器之间连接的端口信息。

但是,对于套接字 struct sockaddrsa_family 始终是 AF_SYSTEM(内核事件消息)。

引擎盖代码:

    int (*origin_connect)(int socket, const struct sockaddr *address, socklen_t address_len);

    int replaced_connect(int socket, const struct sockaddr *address, socklen_t address_len) {
        int r = origin_connect(socket, address, address_len);
        sa_family_t f = address->sa_family;
        NSLog(@"CONNECT FAMILY %d", f);
        if (f == AF_INET) {
            struct sockaddr_in *addr = (struct sockaddr_in *)address;
            NSString *remote_ip = [[NSString alloc]initWithCString:inet_ntoa(addr->sin_addr) encoding:NSUTF8StringEncoding];
            uint16_t remote_port = ntohs(addr -> sin_port);
            NSLog(@"The CONNECT ip = %@ port = %u", remote_ip, remote_port);
            struct sockaddr local_address;
            socklen_t addr_size = sizeof(local_address);
            getsockname(socket, &local_address, &addr_size);
            struct sockaddr_in *laddr = (struct sockaddr_in*)&local_address;
            NSString *local_ip = [[NSString alloc]initWithCString:inet_ntoa(laddr->sin_addr) encoding:NSUTF8StringEncoding];
            uint16_t local_port = ntohs(laddr->sin_port);
            NSLog(@"The CONNECT Local ip = %@ port = %u", local_ip, local_port);    
        } else if (f == AF_SYSTEM) {
            NSLog(@"hello there :(");
            struct sockaddr_ctl * ctl = (struct sockaddr_ctl *)address;
        }
        return r;
    }

是我挂错了方法还是有其他方法可以获取连接的端口信息?

【问题讨论】:

  • 你想钩住哪个进程?

标签: ios jailbreak


【解决方案1】:

你被 AF_SYSTEM 钩住了,因为当应用程序启动时,它们也会调用系统套接字。如果你允许你的钩子忽略它,下一个调用应该拦截 TCP/IP 套接字。

顺便说一句,有更好的方法可以做到这一点。您可以使用 com.apple.network.statistics 从外部获取已连接套接字的信息甚至通知。有关如何执行此操作的完整示例,请访问 http://newosxbook.com/src.jl?tree=listings&file=lsock.c

【讨论】:

    猜你喜欢
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多