我有一个二进制“api.dll”,它使用另一个二进制“helper.dll”。我想使用数字签名验证每个 DLL 的真实性,但我不确定正确的方法。对于上下文,DLL 是使用 Visual Studio 2010 构建的,并通过依赖项选项卡链接。链接通过存根 helper.lib 发生,因此我没有显式调用LoadLibrary
api.dll 代码。部分问题是我不知道helper.dll 是从哪里加载的。我最初的想法是:
- 获取当前进程的句柄
- 枚举所有加载的模块
- 找到名为“helper.dll”的(如果此信息可通过枚举模块 api 获得),并使用 类似这样的方式验证它的签名
这是解决这个问题的最好方法吗?
其次,根据我对数字签名/证书的模糊理解,在我看来,验证需要连接到证书颁发机构,或者证书需要已经在机器上列为受信任的。当外部连接不被接受或被明确禁止时,通常如何处理?它会是应用程序“安装”的东西吗?或者在这种情况下是否需要另一种不太安全的验证方法?