安全性:防止未经授权加载/调用C++DLL
Security: Preventing Unauthorized Loading/Calls into C++ DLL
我有一个C++DLL,foo.DLL,它提供API方法,为加密数据提供明文答案。我想想出一个强大的解决方案,只允许友友(例如user.dll)加载这个dll并使用它的功能。
这不是DLL欺骗的问题,而是如何阻碍DLL仅在特定上下文中工作的问题。我在多个平台上处于潜在的非网络环境中,所以给家里打电话或依靠系统调用不是一个可能的解决方案。
我考虑过的是一个自制的初始化步骤,它共享一个用于初始化的"神奇钥匙"。在安全方面,"自己滚"通常是不好的。
对于这种DLL级别的安全性,有什么公认的做法建议吗?
保护加密数据的唯一方法是确保它需要一个非常长的、不可预测的秘密密钥来解密。安全性不是来自于掩盖解密方法,而是来自于密钥本身。你不能阻止某人调用你的DLL,但DLL中的函数可能要求调用者提供解密密钥作为参数。这样,只有知道密钥的客户端才能解密内容。您可以尝试通过在DLL中的某个位置嵌入解密密钥来作弊,但只需将DLL加载到调试器中即可找到解密密钥。所以不要那样做。
相关文章:
- 使用动态链接加载程序 <dlfcn.h> 而不是直接函数调用的目的是什么?
- 加载由 MATLAB Coder 生成的带有函数的 DLL,该函数调用外部函数
- Linux c++.在预加载的共享库中定义的基类的崩溃调用函数
- 从动态加载的 dll 内部调用C++函数
- 对外部函数的调用是否强制从内存加载
- 混合延迟 dll 加载和手动调用 LoadLibraryA 是否安全?
- 调用提取重加载器会产生对"运算符"的未定义引用错误>>
- 如何动态加载和调用具有特定于库的类型作为函数参数的符号
- QT 加载.dll不调用解析
- C++调用lua_dostring来加载具有"require('cjson')"的Lua Scrip引发错误:cjson.so:未定义的符号:lua_getfield
- 来自Pascal DLL/SO中的C 加载和调用功能
- 通过在C 中动态加载的LIB分配的基础级指针上调用删除的安全性
- 崩溃:分段故障:增强序列化加载 - 用null调用构造函数
- CoInitialize 尚未被调用 - (从 DirectXTK 加载 gamepad.h,无需库)
- 使用 C++ 和嵌入式单声道调用 C# DLL 时无法加载程序集系统
- C dll由于对未调用的不存在的函数的引用而未加载
- 如何修复C#应用程序中调用C++DLL函数时的上下文加载错误
- 加载cygwin C++dll,调用类函数
- 加载调用父类的 DLL 和子 dll
- 安全性:防止未经授权加载/调用C++DLL