我遇到了一个小问题:tsocks
仅适用于使用POSIX api在OS X上连接的程序。我已经成功编写了一个小库,用socks5取代了POSIX connect
调用包装器采用tsocks
的样式。
现在我有一个程序(特别是Spotify Installer),它使用OS X cocoa GCD api进行连接。我想代理那个。
这是我所拥有的:
调用链有点长,但这是其中的一部分:
* frame #0: 0x00007fff894e7e93 libsystem_network.dylib`tcp_connection_create
frame #1: 0x00007fff83f776cf CFNetwork`SocketStream::startTCPConnection_Host(__CFHost*, __CFNumber const*) + 767
...
frame #3: 0x00007fff83f746ff CFNetwork`SocketStream::open(void const*, CFStreamError*, unsigned char*) + 295
....
frame #9: 0x00007fff83fa3e7a CFNetwork`HTTPWriteFilter::_streamImpl_Open(CFStreamError*, unsigned char*) + 200
....
frame #12: 0x00007fff83fa3d79 CFNetwork`NetConnection::openConnectionStreams() + 39
...
frame #18: 0x00007fff83fa31d9 CFNetwork`HTTPProtocol::openStream() + 255
....
frame #34: 0x00007fff8d7ae967 Foundation`+[NSURLConnection(Loader) _resourceLoadLoop:] + 348
frame #35: 0x00007fff8d7ae76b Foundation`__NSThread__main__ + 1318
现在我可以拦截tcp_connection_create
,但我无法找到任何关于函数参数的文档。
我在哪里可以找到tcp_connection_create
的prototye /参数类型?有任何来源吗?
还是有更好的方法。我知道这不会进一步调用socket
/ connect
。