【问题标题】:Windows API spying/hijacking techniquesWindows API 间谍/劫持技术
【发布时间】:2010-09-10 15:41:16
【问题描述】:

我有兴趣使用 API 间谍/劫持来实现我正在从事的项目的一些核心功能。 in this question 也有人提到过,但这并不是真正的话题,所以我认为最好有自己的问题。,

我想尽可能多地收集有关这方面的信息、不同的技术/库(MS Detours、IAT patching)或其他建议。

另外,如果有人有任何使用此类技术的实际生产经验,这将特别有趣 - 它们是否可以足够稳定以用于生产代码,或者这是否是严格的研究技术?它是否可以在多个版本的 Windows 上正常工作?它有多容易出错?

个人经验和外部链接都值得赞赏。

【问题讨论】:

    标签: c++ windows winapi


    【解决方案1】:

    我实现了syringe.dll(L-GPL)而不是 MS Detours(我们不喜欢许可证要求或为 x64 支持支付巨额费用)它运行得非常好,我将它从 Win32 移植到 Win64,我们一直在使用我们现成的商业应用程序已经有大约 2 年的时间了。

    我们使用它的原因非常简单,实际上是为了提供一个表示框架,用于重新打包、将相同的编译应用程序重新标记为许多不同的产品,我们对字符串、通用资源、工具栏和菜单。

    作为 L-GPL,我们提供源代码、版权等,并且仅动态链接到库。

    【讨论】:

      【解决方案2】:

      挂钩标准 WinAPI 函数相对安全,因为它们在不久的将来不会发生太大变化,如果有的话,因为微软这样做了 最好保持 WinAPI 在版本之间向后兼容。 我想说,标准的 WinAPI 挂钩通常是稳定和安全的。

      挂钩其他任何东西,如在目标程序的内部,是另一回事。 无论目标程序如何,挂钩本身通常都是一种可靠的做法。该过程中最薄弱的环节通常是找到正确的位置, 并坚持下去。

      应用程序中的最小变化可以并且将会改变函数的地址,更不用说动态库等等了。

      在游戏黑客中,挂钩是标准做法,这在某种程度上被“sigscanning”打败了,这是一种由 LanceVorgin 在有点臭名昭著的网站上首次开发的技术 MPC 板。它通过扫描可执行映像以查找函数的静态部分来工作,实际指令字节不会改变,除非 函数的动作被修改。 sigscanning 显然比使用静态地址表要好,但它最终也会失败,当目标应用程序发生足够的变化时。

      可以在here找到c++中sigscanning的示例实现。

      【讨论】:

        【解决方案3】:

        几年来,我一直在使用标准的 IAT 挂钩技术,它运行良好,很好且稳定,并且可以毫无问题地移植到 x64。我遇到的主要问题更多地与我如何首先注入钩子有关,花了很长时间才弄清楚如何最好地在启动时的“正确”点暂停托管进程,以便注入对我来说是可靠且足够早的。我的注入器使用 Win32 调试 API,虽然这使得挂起非托管进程很容易,但需要一些试验和错误才能在适当的时间暂停托管进程。

        我对 IAT 的使用主要用于编写测试工具,我有一个死锁检测程序,详细信息在这里:http://www.lenholgate.com/blog/2006/04/deadlock-detection-tool-updates.html,一个 GetTickCount() 控制程序,可以从这里下载http://www.lenholgate.com/blog/2006/04/tickshifter-v02.html 以及仍在开发中的时移应用程序。

        【讨论】:

          【解决方案4】:

          很多人忘记了 Windows dll 编译为hot-patchable images(MSDN)。

          热补丁是WinAPI绕道的最好方法,因为它干净简单,并且保留了原始函数,这意味着不需要使用内联汇编,只需稍微调整函数指针。

          一个小的热补丁教程可以找到here。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-02-20
            • 1970-01-01
            • 1970-01-01
            • 2021-12-19
            • 2013-01-28
            相关资源
            最近更新 更多