Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 确保.DLL/.so的安全性_C++_Windows_Security_Shared Libraries - Fatal编程技术网

C++ 确保.DLL/.so的安全性

C++ 确保.DLL/.so的安全性,c++,windows,security,shared-libraries,C++,Windows,Security,Shared Libraries,我有一个共享库mylib,所以它是在运行时加载的。我需要确保它以正确的mylib.so/mylib.dll加载。是否有跨平台(Win/Mac/Linux)方法来确保加载正确的共享库 我正在考虑对.dll进行校验和,但我不确定如何检索在运行时加载的实际.dll。(这些都是用C++编写的)对于仅限Windows的解决方案,请查看 HMODULE h = GetModuleHandle( "mylib" ); char name[ 300 ]; DWORD rc = GetModuleFileName

我有一个共享库mylib,所以它是在运行时加载的。我需要确保它以正确的mylib.so/mylib.dll加载。是否有跨平台(Win/Mac/Linux)方法来确保加载正确的共享库


我正在考虑对.dll进行校验和,但我不确定如何检索在运行时加载的实际.dll。(这些都是用C++编写的)

对于仅限Windows的解决方案,请查看

HMODULE h = GetModuleHandle( "mylib" );
char name[ 300 ];
DWORD rc = GetModuleFileName( h, name, sizeof(name) );

我并不是说这有助于或阻碍实际的安全性。

如果您没有可靠的硬件,您的软件解决方案将是安全性的展示。如果这是一个银行或更安全的应用程序,NSA标准可能是合适的。如果您尝试复制保护之类的操作,它只会起作用,没有人会在意。我猜在windows上,您可以在加载DLL之前使用并进行某种验证,但我怀疑它是否真的会受益(尽管您可能会发现意外加载了错误的版本)。另一种选择是使用静态库。然后所有代码都在EXE文件中,问题就消失了。是的,静态库是另一种方法。虽然我们当前的库只能编译为.dlls,但不幸的是,由于静态变量的某种疯狂性,我无法使用静态库。这只会在“mylib”加载到进程中后才起作用,此时任何安全性的希望都为时已晚(如果有的话)。