我必须在许多地方的大型应用程序中拦截执行。

我可以使用哪些程序来执行此操作?对于这个问题,存在哪些技术?

手动反向工程和添加钩子可能不是解决此问题的最佳解决方案,因为应用程序很大,并且可以在某个时候更新应用程序的某些部分,我认为 有了一些工具或良好的实践,我可以更快地执行此操作, ,有人知道该怎么做吗?

有人帮我吗?

有帮助吗?

解决方案

看到工具部分已被涵盖,这是用于技术的东西。

取决于您需要挂钩以及是否有保护的方法,有几种方法:

  1. 虚拟化二进制文件中的相对呼叫/JMP修补:这是最简单的,但是如果您无法自动找到对功能的所有引用,则很多工作,由于您的标准,这可能在此原因中起作用。

  2. IAT/EAT挂钩:这是用于进口(IAT)和出口(EAT)的使用,如果您针对已知的APE/导出一组API功能,则非常有用。可以找到一个很好的例子 这里 或者 这里

  3. 热点:Windows XP SP2引入了称为“热点”(用于实时系统功能更新)的东西,其中所有(Winapi)函数均以'Mov Edi,EDI'开头,允许将亲戚跳入中在每个可热绘制功能之上创建的可自由空间(一个人也可以做到)。这通常用于在那里检查IAT或具有其他有趣的保护形式的程序,可以找到更多信息 这里这里

  4. 代码储备:通过将重定向放置在任意代码空间中来捕获执行流。看 这里, 这里 或者 这里

  5. VFT/COM重定向:基本上是对象虚拟功能表中的条目,可用于OOP/COM基于OP/COM的应用程序。看

有很多第三方图书馆,最著名的可能是 MS弯路, ,也可以看 Apihijack 或a 迷你钩发动机.

当然,没有什么可以代替最初的戳戳,您需要用像 Ollydbg, ,但是知道您的使用方法可以大大缺乏他们花的时间花费的时间

其他提示

有关您确切需要做什么的一些细节(例如,您如何确定在哪里闯入)会很好。根据您的情况,类似 别针 可能起作用。

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

如果您有兴趣拦截方法调用,则可以进行API钩。

或使用一些拆卸器,例如软件或 Ollydbg 或者 win32 -Dasm.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top