c++ - 复制保护静态库

标签 c++ linker copy-protection

我将很快发布一个付费静态库,我想知道是否可以构建任何形式的复制保护以防止开发人员复制该库。

理想情况下,如果(且仅当!)库已被非法复制到开发人员的机器上,我想完全阻止库链接到可执行文件中。这可能吗?

或者,如果链接到库的非法拷贝的应用程序根本无法运行,这可能是可以接受的;但是,非常重要的一点是,这不会给这些应用程序的用户带来负担(例如输入许可证 key 、使用加密狗,甚至需要互联网连接)。

该库是用 C++ 编写的,面向包括 Windows 和 Mac 在内的多种平台。

我有什么选择吗?

最佳答案

我同意其他答案,即根本不可能提供万无一失的保护。然而,作为一个轻柔的插入...

如果您的库是预编译的,您可以通过在 API 中要求自定义许可信息来阻止过度的非法使用。

改变一个函数,如:

jeastsy_lib::init()

到:

jeastsy_lib::init( "Licenced to Foobar Industries", "(hex string here)" );

其中第一个参数标识客户,第二个参数是 MD5或其他hash第一个参数 带有 salt .

购买图书馆时,您需要向客户提供这两个参数。

明确,对于足够聪明和雄心勃勃的人来说,这是一种很容易避免的保护措施。将此视为盗版之路上的减速带。这可能会让潜在客户相信购买您的软件是最简单的前进途径。

关于c++ - 复制保护静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2038871/

相关文章:

macos - OSX 上的 LD_PRELOAD 的确切等效项是什么?

c++ - 为什么 RWDBManager::database 需要共享库名?

objective-c - 许多文件的自动音频水印

android - 在 Android 上将游戏 Assets 下载到 SD 卡

ios - 如何验证付费 iOS 应用

c++ - 为什么派生类指针在没有强制转换的情况下不能指向基类对象?

c++ - 带有引用变量的单例

linux - 使用调试符号从源代码编译 glibc

c++ - send() 可以自动变为非阻塞吗?

c++ - 在 C++ 中将十六进制字符串转换为十进制数