我目前正在编写一个MobileSubstrate插件(iPhone代码注入)。它通过挂钩connect()和这段代码来获取主机名:
#ifndef NI_MAXHOST
#define NI_MAXHOST 1025
#endif
int error;
char hostname[NI_MAXHOST] = "";
error = getnameinfo(serv_addr, addrlen, hostname, NI_MAXHOST, NULL, 0, 0);
if (error !=0) {
ALogTCP(@"coudldn't resolve hostname or internal connect");
return orig__connect(sockfd, serv_addr, addrlen);
}
if (error == 0) {
ALogTCP(@"hostname: %s", hostname);
NSString *hostFirst = [NSString stringWithCString:hostname];
}
现在我注意到一些主机名无法正常解析(错误的主机:如connect.xyz.com而不是irc.xyz.com)(取决于DNS服务器)。
我不习惯所有的网络功能,广泛的搜索没有找到任何解决方案: 我正在考虑挂钩一个负责所有主机名 - > IP“转换”的函数,获取主机名并在以上代码中使用它。有这样的功能吗?它是如何被称为的?
非常感谢你。
答案 0 :(得分:1)
这就是我最终做到的方式,花了我大约7个小时来弄明白:D
挂钩到CFHostCreateWithName(CFAllocatorRef * allocator,CFStringRef * hostname)
之后我使用gethostbyname来获取IP。
现在我可以将这些信息与我通过挂钩连接()
检索的信息进行比较