我有一个丢失的C代码库中的devilish-gui.exedevilish.dlldevilish.h
客户仍然使用devilish-gui,它使用devilish.dll
devilish.h在30页的pdf中很少记录:它公开了一些C函数,这些C函数根据作为参数提供的结构中的值以不同的方式表现。

现在,我必须使用devilish.dll编写一个新的devilish-webservice。不,我无法重写它。

该文档几乎没有用,但是由于我有devilish-gui.exe,所以我想编写一个devilish.h的不同实现,以便它在文件中记录函数的调用和参数,而不是调用原始的dll函数。类似于ltrace在linux上所做的事情,但专门用于此怪异的库。

如何在Windows上编写此类“拦截” dll并将其注入(inject)devilish.dll和devilish-gui.exe之间?

最佳答案

几种可能性:

  • 使用Detours
  • 如果将devilish.dll的实现与devilish-gui.exe放在同一目录中,然后将devilish.dll的实际实现移到子目录中,则Windows将加载您的实现,而不是实际的实现。然后,您的实现可以转到真正的实现。我假设devilish-gui不是hardened against search path attacks.
  • 另一种方法是使用IntelliTrace收集对devilish.dll的所有调用的跟踪日志。
  • 09-07 08:33