【问题标题】:Force my software to use the DLL from a specific location强制我的软件从特定位置使用 DLL
【发布时间】:2017-11-10 09:58:24
【问题描述】:

有一个使用我的 DLL 的程序,该程序现在位于该软件所在的同一文件夹中,因此它会自动使用它。

如何强制我的软件仅在它所在的文件夹中搜索这个特定的 DLL?

我想防止有人在我的位置植入他们的 DLL,从而从程序中窃取信息。我可以按位置验证 DLL,但我不确定如何防止程序从其他位置获取 DLL。

换句话说,如何防止有人从软件文件夹中删除我的 DLL 并将其 DLL 插入到程序默认搜索 DLL 并且我的程序找不到文件在其文件夹中,它将开始在 Windows 的一般位置搜索它,DLL 将等待它他这样做了

简而言之,我的问题是:

A 有没有办法阻止我的软件在我正在运行的文件夹之外的任何文件夹中查找特定的 DLL?

B 程序在 Windows 中查找 DLL 的所有地方是什么(默认情况下,我会检查每个人并确保没有“礼物”)

谢谢

【问题讨论】:

  • 自己使用dlopen()
  • 或 LoadLibrary for Windows API ?
  • 是什么阻止了某人替换您文件夹中的 DLL,而不仅仅是删除它?
  • 应用程序目录已被保护。如果有人可以替换应用程序目录中的二进制文件,他们可以做的远比你试图保护的要多。

标签: c++ windows dll


【解决方案1】:

只是不要在构建时链接 DLL。相反,您可以使用LoadLibrary API(或LoadLibraryEx,如果您想要更多控制)通过提供您要加载的DLL 的确切路径,在您的代码中自己加载DLL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    • 2016-06-10
    • 2013-08-25
    • 2020-04-14
    • 2017-09-02
    • 2016-06-15
    • 1970-01-01
    相关资源
    最近更新 更多