【问题标题】:Electron with C++ backend - secure?带有 C++ 后端的电子 - 安全吗?
【发布时间】:2020-01-16 17:43:06
【问题描述】:

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

此外,在保持最大安全性的同时,最好的方法是什么?

谢谢。

编辑:这个怎么样? Is it possible to use c++ as back-end for Electron.js?

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

【问题讨论】:

  • 连接是什么意思?喜欢消息传递?
  • 查看电子应用程序的 JS 代码相当容易,这意味着您的 C++ 库的 API 将是可发现的。无论如何,您也会将库提供给您的用户,因此他们可以使用其他工具来确定库的 API。
  • @Xatyrian 我需要将列表、字典和字符串等数据从我的 C++ 代码实时传递到我的 Electron GUI。而且我的电子 GUI 需要能够以同样的方式向 C++ 发送数据。
  • @Romen 有什么办法可以解决这个问题吗?
  • 用 C++ 编写整个应用程序,不要像使用 DLL 那样导出任何函数。

标签: electron cracking


【解决方案1】:

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

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

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

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

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

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

您还应该期望精明的最终用户能够使用其他工具来检查 API 并实施与该 API 对话的第三方代码。

此外,在保持最大安全性的同时,最好的方法是什么?

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

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

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

【讨论】:

    猜你喜欢
    • 2018-01-16
    • 2016-10-20
    • 2014-08-07
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 2012-05-24
    • 1970-01-01
    相关资源
    最近更新 更多