【问题标题】:How to implicitly load only signed DLL s如何隐式加载仅签名的 DLL
【发布时间】:2018-09-18 10:07:19
【问题描述】:

我有一个与一组 dll 文件链接的应用程序。我在不经过不安全的 LoadLibrary() 调用的情况下隐式加载 DLL。我正在考虑使用证书文件对 DLL 进行签名以避免 DLL 劫持。我怀疑隐式链接如何检查我的 DLL 是否已签名。

【问题讨论】:

    标签: c++ windows dll


    【解决方案1】:

    您应该使用 MANIFESTDEPENDENCY 链接器选项添加清单依赖项,并将 publicKeyToken 设置为用于签署 dll 的密钥。

    例如类似:

    /manifestdependancy:type='win32' name='mydll' language='*' publicKeyToken='1234567890ABCDEF0'
    

    Windows 将拒绝加载您的应用程序,除非存在符合上述条件的 dll。

    【讨论】:

    • 感谢您的回答,我尝试将其添加到我的项目中,并且在编译依赖项目时抛出链接器错误。它正在寻找名称字段中指定的目标文件。如果我链接链接库的构建目录中的目标文件。它正在编译,应用程序仍然无法启动。我错过了什么
    • 名称字段应设置为dll的名称(不带.dll扩展名)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    相关资源
    最近更新 更多