C ++ \\ DLL - 如何防止DLL欺骗?

时间:2012-05-07 10:28:04

标签: file dll spoof

我有一个我购买的DLL文件(没有源代码)并且我将它链接到我的应用程序,只需使用“LoadLibrary(”file.dll“)”,然后它导入一个获得唯一的函数计算机的ID。现在让我们说我们的黑客检测到这个函数的名称,现在他正在创建一个新的dll文件,其中包含相同的名称和相同的函数名称。 他的新DLL文件将被替换(只需将他的dll抓取到目录并替换为我的),并且可以使用唯一ID的功能但不返回任何内容。所以现在我的应用程序获得了一个空白的唯一ID,黑客已经离开了我的手。

任何想法如何预防?我的项目是用C ++编写的。

提前致谢。

2 个答案:

答案 0 :(得分:0)

您可以询问从中获取DLL的公司提供此DLL的LIB。然后你可以静态链接到这个LIB。这样做时,库的代码将成为代码的一部分,因此对于挂钩是透明的!

答案 1 :(得分:0)

另一种可能性(在外部DLL的情况下确实是必要的):您可以尝试说服您的DLL提供程序导出函数NOT由NAME但由Ordinal导出。这通过默默无闻导致安全。这不会阻止挂钩或更换,但至少这不会使导出的功能明显易于理解。像73(按编号导出函数)而不是CreateMyFile(按名称导出函数)。