首页 > 解决方案 > 带有 C++ 后端的电子 - 安全吗?

问题描述

我已经用 Electron 编写了一个 UI,我想将它与我的 C++ 代码连接起来。但是,我将销售这个产品,所以我想知道这是否能让人们更容易破解我的 C++ 代码?显然我知道编译后的 C++ 无论如何都可以被破解,但这对它有什么影响吗?

此外,在保持最大可能安全性的同时解决此问题的最佳方法是什么?

谢谢。

编辑:这个怎么样?是否可以使用 c++ 作为 Electron.js 的后端?

EDIT2:澄清一下,我的 Electron 应用程序将显示 C++ 程序中正在执行的操作的状态。因此,我需要将列表、字典、字符串等从 C++ 发送到 JS,然后由其渲染。此外,我的 Electron 应用程序上的按钮需要触发 C++ 代码中的操作,例如停止或启动程序的某些部分。

标签: electroncracking

解决方案


我已经用 Electron 编写了一个 UI,我想将它与我的 C++ 代码连接起来……我想知道这是否让人们更容易破解我的 C++ 代码?

使用电子对保护 C++ 源代码没有任何意义。(您的知识产权)

不过,在 electron 中运行的 Javascript 代码将非常容易进行逆向工程,这让用户在试验 C++二进制文件时抢占先机。使用缩小和混淆工具至少可以让这变得更难。

对于 C++ 端,将 C++ 连接到 Electron 至少可以通过以下两种方式完成:

  • 通过动态链接到共享库(Node.js C++ 插件
    在这种情况下,您的 C++ API 将是由共享库导出的函数。有许多工具可以检查共享库 (DLL) 并查看这些函数。
  • 通过使用某种进程间通信与另一个进程通信
    在这种情况下,您的 API 将取决于使用的 IPC 方法。如果是 TCP/UDP 消息,您可以使用Wireshark检查进程之间的数据包。有多种方法可以检查通过任何类型的 IPC 的消息。

无论哪种方式,您的应用程序都必须使用已编译的二进制文件交付给最终用户。如果您实际上将二进制文件提供给您的用户,那么防止二进制文件本身的逆向工程是不可能的。

您还应该期望精明的最终用户可以访问其他工具,这些工具可以检查 API 并实现与该 API 对话的第三方代码。

此外,在保持最大可能安全性的同时解决此问题的最佳方法是什么?

通过“最大可能的安全性”,我假设您指的是防止未经授权将 C++ 代码用于其他应用程序。

您需要一个许可系统来验证使用您的 C++ 二进制 API 的应用程序。解释这究竟是什么对于 Stack Overflow 来说可能是一个太大的答案,您将不得不对许可系统的实施方式进行一些研究。

不过,从理论上讲,开发一个完美的许可系统可能是不可能的。看看游戏行业,每发布一款新游戏,授权软件都需要几天时间才能绕过。唯一尚未完全攻克的软件架构是基于云的应用程序,它们实际上并没有将已编译的代码及其业务逻辑交付给最终用户的计算机。


推荐阅读