2010-09-09 51 views
1

我必须在很多地方在非常大的应用程序中拦截执行。在DLL注入后拦截BIG应用程序执行

我可以用什么程序来做到这一点?有什么技术存在这个问题?

手动逆向工程并添加挂钩也许是这个问题不是最优的解决方案,因为应用程序是非常大的和应用程序的某些部分可以在一段时间内更新,我觉得有一些工具或良好做法对于这个问题我可以做得更快,有谁知道该怎么办?

有人帮我吗?

+0

你可以访问码?还有,你如何确定拦截什么 - 一些特殊的API或模式? – 2010-09-18 17:42:29

+0

@Fasial Ferox:我没有权限,“你怎么确定拦截什么?” - 我使用IDA解散应用程序,但是这个应用程序非常庞大,很难扭转,在我之前我有很大一部分工作,我寻找更快的解决方案,也许在这个问题上有一些最佳实践,一些简单的提示可以加速我的工作大约月/秒。我挂钩了内部功能。 – Svisstack 2010-09-18 22:24:30

回答

4

作为工具的一部分已被覆盖,这里是技术的东西。

取决于什么是你需要挂钩,以及是否有保护invloved,有几个方法:

  1. 相对呼叫/ JMP在虚拟的二进制补丁:这是最简单的,但如果您无法自动查找所有对某个功能的引用,还需要进行大量工作,但由于您的标准,这可能不适用于此原因。 IAT/EAT挂钩:用于导入(IAT)和导出(EAT),如果您的目标是已知的导入/导出的API函数集合,那么该方法非常有用。一个很好的例子可以发现herehere

  2. 热修补:Windows XP SP2中引入了一种叫做“热补丁”(用于实时系统功能更新),所有它的(的WinAPI的)功能开始'mov edi,edi',允许在每个热补丁函数(one can do it too)上创建的空闲空间中修补相对跳转。这通常用于程序,校验有IAT的或有保护的其他有趣的形式,更多信息可以发现herehere

  3. 代码放:通过将重定向任意代码空间抓取执行流程。见hereherehere

  4. VFT/COM重定向:基本上覆盖条目中一个对象虚拟功能表,用于OOP/COM基于应用是有用的。看到this

有很多第三方库的,最有名的大概是MS Detours,一方面也可以看APIHijackmini-hook engine

Ofcourse没有什么可以替代你需要与像ollydbg调试器做初步戳,但我们知道的方法你会使用可以大大短他们量时间花费的时间闲逛

+0

为什么这是低调? downvoting和不离开的原因为什么是相当粗鲁的... ... - – Necrolis 2010-09-29 04:43:48

1

有关您需要做什么的一些细节(例如,您如何确定在哪里断开)会很好。根据你的情况,像Pin可能工作。

0

如果您对拦截方法调用感兴趣,则可以执行API挂接。

或者使用一些反汇编软件或ollydbgwin32dasm

+0

我使用IDA调试器,但分析大型应用程序的一部分,以找到良好的功能钩需要时间,我必须钩住20个可执行文件中的200个函数(这是完全不同的)我寻求加快我的工作的解决方案。 – Svisstack 2010-09-18 22:22:05

1

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