我有一个丢失的C代码库中的devilish-gui.exe
,devilish.dll
和devilish.h
。
客户仍然使用devilish-gui
,它使用devilish.dlldevilish.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之间?
最佳答案
几种可能性:
devilish.dll
的实现与devilish-gui.exe
放在同一目录中,然后将devilish.dll
的实际实现移到子目录中,则Windows将加载您的实现,而不是实际的实现。然后,您的实现可以转到真正的实现。我假设devilish-gui
不是hardened against search path attacks. devilish.dll
的所有调用的跟踪日志。