包装DLL以记录某些功能

时间:2018-05-13 20:00:55

标签: c++ dll wrapping

因此,如果我有一套完整的标头和一个C ++ dll的.lib文件,是否可以创建第二个包装原始文件的C ++ dll,并允许我查看何时调用某些函数然后它只是调用原来的功能?有更简单的方法吗?我也只关心大型dll中的几个函数

1 个答案:

答案 0 :(得分:1)

当然是可能。你为什么不这么认为?甚至可以将导出的函数定义为另一个DLL中导出函数的别名,以传递您不感兴趣的函数。

当您遇到问题时,软件会使用原始.lib文件静态链接到原始DLL。由于您可能无法重新编译此类软件以使用.lib文件,因此您的DLL需要与原始DLL具有相同的文件名,并且复制原始DLL的导出完全 (姓名和序数)。

另一个问题是如果原始DLL导出软件使用的类。那些将难以复制。

另一种方法是根本不替换原始DLL,而是将DLL注入目标进程,然后detour只输出您感兴趣的DLL。