【问题标题】:C++, Winsocket DLL Send injectionC++、Winsocket DLL 发送注入
【发布时间】:2012-11-27 18:47:42
【问题描述】:

感谢阅读。我一直在尝试从注入的 DLL 从 Winsock 发送带有“发送”的数据包,但我做不到,我看过很多关于 HOOKING“recv”和“send”的指南,但不是关于通过发送数据包使用“发送”或“WSASend”和同一个套接字,有没有办法使用“发送”和使用同一个套接字?,我应该得到套接字句柄吗?谢谢

【问题讨论】:

  • “但我做不到” - 你能说得更具体点吗?究竟发生了什么?
  • 我有一个 ASM 挂钩来“发送”,然后我尝试通过将缓冲区移动到一个变量来更改输出,然后将更改后的缓冲区返回到原始的“发送”函数,这就是我的方式试图做到这一点,但这不是我真正需要知道的,我不需要挂钩来“发送”我需要知道如何使用与应用程序创建的相同套接字进行“发送”。感谢阅读。

标签: c++ winsock send code-injection


【解决方案1】:

我应该得到套接字句柄吗?

是的,如果你能得到套接字句柄,我看不出问题出在哪里:因为你注入的 DLL 在同一个进程中运行,所以允许使用现有的句柄(如果你能发现句柄值,也许通过挂钩其中一个套接字函数来查看挂钩的应用程序正在使用哪个套接字句柄)。

您可能无法重新打开同一个套接字来获得自己的新句柄。

【讨论】:

    【解决方案2】:

    可能有几个原因。其中一些我可能会想到:

    1. 您正在尝试发送到已关闭的套接字。如果您正在对主应用程序活动异步调用 send() ,则在您尝试发送时应用程序可能已经关闭了套接字。尝试在用于发送数据的套接字上的 send() 或 recv() 调用的钩子函数中发送。
    2. 另一个线程中的同一个套接字上还有另一个 send() 调用。
    3. 缓冲区长度参数与实际缓冲区长度不一致(如果您只是更改缓冲区参数,但保留原始调用中的长度参数不变,则可能会发生这种情况)

    希望这会有所帮助。

    【讨论】:

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