拦截与获取Windows版本相关的API调用

时间:2013-03-04 09:28:22

标签: c# c++ c api call

我一直在玩Homeworld 1,要运行它,你需要运行Windows NT 4兼容模式。

由于某种原因,Windows 8没有这个,这非常烦人。

使用Microsoft应用程序兼容性工具包我发现Homeworld进行API调用以获取Windows的版本,它似乎停止工作,除非它认为它在Windows NT上运行(使用调试器我可以看到它调用GetVersion和GetVersionEx)。

http://technet.microsoft.com/en-us/library/cc749574(v=ws.10).aspx

使用上面的Microsoft Applocation Compat Toolkit修复了这个错误,但是我在很多不同的计算机上玩这个游戏,有些不能使用上面的方法。

有没有办法让我制作某种截取API调用的包装器,并使用上面的链接结构返回它们,以便程序认为它在NT上运行?我已经看到你放在一个文件夹中的很多DLL,它可以拦截某些调用,虽然我不确定它们是如何工作的,我认为它们是用C,C ++编写的。

我真正了解的唯一语言是C#,我认为它不能做我想要的,所以如果有人能够指出我正确的方向,帮助,给我提示或者指向我我可以得到更多的帮助,这将是伟大的!

谢谢你的时间!

1 个答案:

答案 0 :(得分:1)

您可以使用api挂钩库,这里是着名的easyhook库的tutorial

为您的应用程序挂钩GetVersionEx api并返回您想要的内容。