【问题标题】:Intercept BIG application execution after DLL injectionDLL 注入后拦截 BIG 应用程序执行
【发布时间】:2011-04-10 01:14:24
【问题描述】:

我必须在很多地方拦截非常大的应用程序的执行。

我可以使用哪些程序来做到这一点?有哪些技术可以解决这个问题?

手动逆向工程和添加钩子可能不是这个问题的最佳解决方案,因为应用程序非常大并且应用程序的某些部分可以在一段时间内更新,我认为有一些工具或好的做法来解决这个问题我可以更快地做到这一点,有人知道怎么做吗?

有人帮帮我吗?

【问题讨论】:

  • 您可以访问代码吗?另外,您如何确定要拦截的内容 - 一些特殊的 API 或模式?
  • @Fasial Ferox:我没有权限,“你如何确定要拦截什么?” - 我用 IDA 反汇编应用程序,但这个应用程序非常大并且难以逆转,我面前有非常大的工作,我正在寻找更快的解决方案,也许有一些关于这个问题的最佳实践,一些简单的技巧可以加快我的工作大约月/秒。我挂钩内部函数。

标签: debugging dll reverse-engineering disassembly interception


【解决方案1】:

既然工具部分已经介绍过了,这里是一些技术方面的内容。

根据你需要钩什么以及是否有保护,有几种方法:

  1. 虚拟化二进制文件中的相对调用/jmp 修补:这是最简单的,但如果您无法自动找到对函数的所有引用,这也可能无法正常工作,原因是符合您的标准。

  2. IAT/EAT 挂钩:这用于导入 (IAT) 和导出 (EAT),如果您的目标是一组已知的导入/导出 API 函数,那就太好了。可以在 herehere 找到一个很好的例子

  3. 热补丁:Windows XP SP2 引入了一种称为“热补丁”的功能(用于实时系统功能更新),其中所有(WinAPI)功能都以“mov edi,edi”开头,允许相对跳转被修补到每个热补丁函数上方创建的可用空间中(one can do it too)。这通常用于校验和存在 IAT 或具有其他有趣保护形式的程序,可以找到更多信息 herehere

  4. Code-Caving:通过在任意代码空间中放置重定向来捕获执行流。见hereherehere

  5. VFT/COM 重定向:基本上覆盖对象虚函数表中的条目,对基于 OOP/COM 的应用程序很有用。见this

第三方库很多,最有名的应该是MS Detours,也可以看看APIHijack或者mini-hook engine

当然,没有什么可以替代您需要使用ollydbg 之类的调试器进行的初始探查,但是知道您将使用的方法可以大大缩短他们花在探查上的时间

【讨论】:

  • 为什么这被否决了?投反对票并且不留下理由是非常粗鲁的......
【解决方案2】:

一些关于你需要做什么的细节(例如你如何确定在哪里休息)会很好。根据您的情况,Pin 之类的内容可能会起作用。

【讨论】:

    【解决方案3】:

    我建议使用Deviare API Hook。这是你可以做你需要的最简单的方法。它有一些 COM 对象,您可以使用这些对象从不同的进程中挂钩应用程序。在您的过程中,您可以获得完整的参数信息,并且可以在任何编程语言中使用它(我使用的是 C#,它的工作原理就像一个魅力)。 如果您需要拦截注册表 API,我建议使用 Deviare 来调试您需要拦截的内容,但是您必须自己制作钩子,否则您会发现性能问题。

    【讨论】:

      【解决方案4】:

      如果你有兴趣拦截方法调用,你可以做 API Hooking。

      或者使用一些反汇编程序,例如 softice 或 ollydbgwin32dasm

      【讨论】:

      • 我使用 IDA 调试器,但分析大型应用程序的一部分以找到好的钩子函数可能需要一些时间,我必须在 20 个可执行文件中钩子大约 200 个函数(这完全不同)我正在寻找解决方案加快我的工作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多