0

我正在用 C++ 编写我的过程。
现在我想写它的GUI。
我正在考虑使用 Java 来执行此操作并使用 JNI 链接它,但后来我想到了一个安全问题......
假设我的 GUI.exe 文件是用 Java 编写的,并且我也有我的 Engine.dll 文件编写在 C++ 中。
什么会阻止邪恶的人获取我的 DLL 并将其链接到他们的程序?
我确实在我的 C++ dll 中使用了许可证验证的东西,但它可以被这些邪恶的邪恶的人破坏。
我知道每个程序都可以被破解,但我不想只是给他们我的引擎以方便使用。

有没有办法保护这个链接?
还是我也应该使用 C++ 来编写 GUI?

4

2 回答 2

0

最便携的解决方案可能涉及以任何看起来合适的方式加密进入和离开 DLL 的数据。那时不需要对 C++ 端进行混淆。这将需要将加密密钥嵌入到 C++ 二进制文件和您将 Java 编译到的任何内容中;例如,您可以采取额外的步骤,通过用一大块随机垃圾隐藏它并对其进行索引来使其不方便查找。

另一种选择是支付许可系统的费用,该系统将在调用或链接时由 ubercool.dll 进行检查。

最终,您正在尝试执行一些注定要失败的防御行动。如果您的 ubercool 功能真正有价值或有用,并且有人想以您不希望他们不喜欢的方式使用它,他们会想办法。谁能想到还有没有破解的商业软件?

最后,您可以在最终用户无法摆弄的系统上运行您的软件。具有锁定引导加载程序、TPM 模块等的移动设备是一种方法;另一种是将您的 ubercool 东西作为托管服务运行,如果人们拥有您当然可以控制的适当凭据,他们可以连接到该服务。

于 2012-06-15T09:58:03.853 回答
-1

考虑对将使用 dll 的 Java 或 C# 代码使用混淆器。这并不能解决所有问题,但是对程序进行逆向工程会更加困难。

此外,如果您的项目是用 C++ 编写的,您可以考虑将 C++\CLI 用于应用程序的 GUI 部分。

于 2012-06-13T15:33:55.543 回答