窗户有能力应用 垫片 误行为的应用程序.垫片是用于拦截API调,并改变它。例如,垫片可以用于:

  • 改变入参数
  • 撒谎的返回值
  • 改变它叫别的东西

应用程序兼容性的无线工具包 有相当多的现有垫片你可以应用到你自己的错误行为的应用程序。这里有一个例子中的一个,将忽略你的API调和,而不是呼吁完全不同的API替代:

alt text

我需要一个垫片,不是数以百计的垫片微软已经写。 我需要一个自定义的垫片.

在我的情况下,我想拦截:

GetSystemMetrics(0x1000)

因此,它返回 0.我找不到任何信息,关于如何得到Windows我自己的DLL,将有解决我所需要的。我甚至不知道如果你 可以 创建自定义垫片。

不Windows支持定义的垫片?

有帮助吗?

解决方案

我不知道任何方式的其他人而不是Microsoft实施appcompat垫片。

你可能需要调查 弯路, 它可提供的功能你想要的。

其他提示

你必须要想想这个由雷蒙德*陈的观点。想象一下如果它们可能为其他人比微软写的兼容性垫片。然后只要Microsoft断变化的,除了他们所有的其他兼容性的工作,他们还将必须编写填充的第3次缔约方垫片,有没有错误的事情。保持后向兼容性是很难的,因为它是足够的。

这是可能的,但它需要一些工作。

你产生的应用程序使用自己的启动程序将适用的垫片。你这么做让你的启动创建该进程有足够的权限以编辑其记忆。最API功能的开始,与一两个字节nop先通过更nops.你可以改变两个字节nop入一个短跳,上述nops长跳跃在任何你想去的地方。

一个替代解决方案,我已在过去使用的是装载的可执行作为一个问题,但这可能导致更多的工作,因为这取决于如何挑剔的应用程序。在我的状况我不得不装载的可执行的为数据DLL和做所有我自己的进口,但不幸的是,先前的方案不是一个选项我。

我也一旦写入一个挂钩DLL使用的类似的原则,但这仅仅是一个选项,如果你可以修改源载DLL或如果该进程支持DLL插件。

你总是可以使用逆向工程,以解决这个问题:),让我知道如果你需要任何帮助

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