2

我有一个 C 代码库中的 a devilish-gui.exe、 adevilish.dll和 adevilish.h已经丢失。
devilish-gui客户仍在使用它,它使用devilish.dll

devilish.h在 30 页的 pdf 中记录得很差:它公开了一些 C 函数,这些函数根据作为参数提供的结构中的值以非常不同的方式表现。

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

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

我怎样才能在windows上编写这样的“拦截”dll并将其注入devilish.dll和devilish-gui.exe之间?

4

1 回答 1

3

几种可能性:

  1. 使用弯路
  2. 如果您将您的实现devilish.dll放在与 相同的目录中devilish-gui.exe,并将真正的实现移动devilish.dll到一个子目录中,Windows 将加载您的实现而不是真正的实现。然后,您的实现可以转发到真正的实现。我假设这devilish-gui并没有针对搜索路径攻击进行强化。
  3. 另一种方法是使用IntelliTrace将所有调用的跟踪日志收集到devilish.dll.
于 2013-09-28T04:02:11.730 回答