我有一个C ++ DLL,foo.dll,提供API方法,为加密数据提供明文答案。我想提出一个强大的解决方案,只允许友谊(例如.user.dll)加载此DLL并使用其功能。
这不是DLL欺骗的问题,而是如何将DLL阻塞到仅在某些上下文中工作的问题。我在多个平台上处于潜在的非联网环境中,因此打电话回家或依赖系统调用不是一种可能的解决方案。
我所考虑的是家庭酿造的初始化步骤,共享初始化的“魔术键”。有了安全性,“自己滚动”通常很糟糕。
对这种DLL级安全性的公认实践的建议吗?
答案 0 :(得分:2)
保护加密数据的唯一方法是确保它需要一个非常长的,不可预测的秘密密钥来解密它。安全性不是来自模糊解密方法,而是来自密钥本身。 您无法阻止某人调用您的DLL,但DLL中的函数可能要求调用者提供解密密钥作为参数。 这样,只有知道密钥的客户端才能解密内容。 您可以尝试通过在DLL中的某处嵌入解密密钥来作弊,但只需将DLL加载到调试器中即可找到它。所以不要这样做。