我需要通过 Socks5、SSH 或 HTTPS 建立应用程序的连接(主要是 TCP)。
到目前为止,我已经找到了 3 种方法来做到这一点:api hooks、winsock lsp 和驱动程序。
我正在寻找有关处理此问题的最佳方法的建议,以及任何可以为我抽象此任务的 SDK 建议(首选免费/开源,但只要价格不高,欢迎使用商业版本) -man-starting-company 负担得起)。
附言。我正在使用 .Net(C# 和/或 C++/CLI)
编辑:我无法控制目标应用程序。
作为一种直接的方式,您可以调用plink命令行来创建隧道,然后从您的应用程序连接到 localhost。Plink 是 Putty 的命令行版本,您有很多选项,它是一个非常流行、安全且经过测试的应用程序。
您有一个应用程序(SSH 隧道客户端),它通过一个漂亮的 UI 为您完成它。这是一个有点错误,但它工作得很好。
此示例将远程计算机中的端口 80 连接到本地主机的端口 8000。
plink.exe -L 127.0.0.1:8000:127.0.0.1:80 -C -pw 1234 -2 -l user myserver.com
我不推荐这种方法是命令行包含密码,并且很容易使用任何进程管理器查看,现在 plink 的好处是您有可用的源代码,因此您可以将其集成到您的项目中。
编辑
现在假设您的应用程序连接到“yahoo.com”以获取一些数据,您无法修改应用程序,但可以在中间设置一个 Man。您可以执行下一个命令:
plink.exe -L 127.0.0.1:80:google.com:80 -C -pw 1234 -2 -l user myserver.com
其中myserver.com是一个 SSH 服务器,它允许您建立隧道并可以访问 google.com 现在以管理员身份转到 C:\windows\system32\drivers\etc\ 中的主机文件并添加下一个条目:
127.0.0.1 yahoo.com
您可以使用浏览器测试设置并导航到 yahoo.com,然后您将看到 google.com 页面。这看起来很简单,但真正的力量在于所有流量都通过 myserver.com。
一些优点是
请注意,由于证书身份验证,此方法很可能会出现 HTTPS 连接问题。