1

我需要通过 Socks5、SSH 或 HTTPS 建立应用程序的连接(主要是 TCP)。

到目前为止,我已经找到了 3 种方法来做到这一点:api hooks、winsock lsp 和驱动程序。

我正在寻找有关处理此问题的最佳方法的建议,以及任何可以为我抽象此任务的 SDK 建议(首选免费/开源,但只要价格不高,欢迎使用商业版本) -man-starting-company 负担得起)。

附言。我正在使用 .Net(C# 和/或 C++/CLI)

编辑:我无法控制目标应用程序。

4

1 回答 1

1

作为一种直接的方式,您可以调用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。

一些优点是

  1. 到 yahoo.com 的所有流量都是加密的
  2. 您可以使用此方法绕过代理限制
  3. 如果可以从外部连接到 myserver.com 所在的 Intranet,则可以访问它
  4. 您可以记录或修改连接的数据

请注意,由于证书身份验证,此方法很可能会出现 HTTPS 连接问题。

于 2010-05-07T06:10:05.887 回答