对我为 excel 工作簿许可密钥开发的系统的见解?

Posted

技术标签:

【中文标题】对我为 excel 工作簿许可密钥开发的系统的见解?【英文标题】:Insight on the system I developed for excel workbook licensed key? 【发布时间】:2020-08-05 23:52:58 【问题描述】:

足以阻止人们随意使用我的excel工作簿吗?

我目前正在开发有关财务记录保存和建模的 Excel 工作簿。我希望我的工作簿仅供一个用户使用,并防止他们将其分发给另一台计算机使用。我对有关 excel 工作簿保护的问题进行了一些研究,并提出了这个系统来为我的工作簿进行许可激活。

    当用户在线购买我的工作簿时,我要求他们在他们的计算机上下载并运行验证工作簿(其功能仅用于检索磁盘序列号),将加密号码复制并发送回给我。 当我收到加密后的数字(即磁盘序列号)时,我会对其进行解密并在实际工作簿上盖章。然后,我将向用户发送带有序列号印章的实际功能齐全的工作簿。 要使用工作簿,当用户登录时,宏将从计算机检索当前磁盘序列号,并将其与我最初标记的编号进行比较。如果数字相同,他们可以使用工作簿,否则,所有宏都将不起作用,因为我已经为宏工作了一个特殊的键。 如果用户因为序列号而无法登录或尝试双重登录到另一台计算机,我会要求他们从实际工作簿中生成磁盘序列号并将图片发送给我。如果发送的号码与盖章号码相同,则问题不在序列号上。如果号码不同,则发送另一个工作簿是违反我的政策的,因为用户有责任确保他们在购买期间向我发送了正确的号码。 请务必注意,我的 VBA 代码将被完全混淆并受密码保护。虽然密码被破解,但他们无法阅读代码并理解结构。另一件事,我的 Open Workbook 宏有一个独特的操作,可以在工作簿上设置一些条件。如果它被停止,那么工作簿中的所有宏都将不起作用并且将毫无用处。所有重要信息都将被加密并粘贴在工作表上。

我想知道我的系统是否有某种方法可以绕过,仍然可以非法分发。我知道一些 excel 证券问题,它并不完全安全,但如果有人破解了我的 VBA 代码并看到乱码,创建一个新代码比更改它需要更少的努力。

【问题讨论】:

恐怕VBA密码很容易被破解。然后,即使您有一个“打开工作簿宏”“在工作簿上设置一些条件”,也应该很容易理解您的条件并绕过它们,或者以绕过它们的方式调整 subs。为了有一些代码隐私,我认为你必须创建一个 COM 插件。 在任何威胁模型中都有一个点,超过这个点,你只需要向潜在的攻击者低头,然后说“看看你是否已经走到了这一步,你就赢了。恭喜冠军! " - 你已经采取了谨慎的(甚至是侵入性的)步骤来保护你的工作,我猜这是..光荣的。你的问题的答案是,这对你来说足够了吗?我不知道您使用的是什么混淆器,但我的经验法则是“VBA 是不安全的,期间。” 如果“加扰”的 VBA 项目仍然可以执行,那么编译后的 p-code 仍然存在。如果编译后的p-code仍然存在,...理论上也意味着编译后的p-code也可以反编译。 嗨,Mathieu,为了澄清,编译的 p 代码通常会集成到 VBA 代码中吗?如果有人能找到 p-code,他就被认为是高技能的入侵者,我无法阻止好奇心和技能高的人。 【参考方案1】:

首先,欢迎来到***。

对于第 1-4 部分,对于知道宏在 VBA 中如何工作的人来说,没有太多的安全保障。例如,即使有人在启动时按 ESC 也可以停止执行。即使您使用 Application.EnableCancelKey = xlDisabled,默认情况下宏也不会运行,这将使用户有机会破解您文件的密码并在启动事件中设置“停止”。

只有一个用户需要购买您的工作簿的副本,然后可以分发给他们希望的任意数量的人。

但是:

我知道一些 excel 证券问题,但它并不完全安全,但如果有人破解了我的 VBA 代码并看到乱七八糟的乱码,那么创建一个新的而不是更改它会花费更少的精力。

这将为您提供最大程度的保护。如果这是真的,那么您不必担心您的工作簿被破解,而只需担心市场上的竞争对手。

【讨论】:

感谢您的 cmets。第 1-4 部分主要用于许可证密钥激活。如果有人进入我的项目,有什么方法可以混淆我的 VBA 代码? 有一些方法可以混淆甚至 VBA 代码,例如通过将所有名称更改为乱码并通过函数和子程序增加复杂性。然而,由于 VBA 缺乏现代特性,即使这也比其他编程语言更受限制。如果需要如此安全,最好将代码编写为 com 插件,并且仍然可以在与 VBA 非常相似的 VB6 中编写已编译的 COM 插件。

以上是关于对我为 excel 工作簿许可密钥开发的系统的见解?的主要内容,如果未能解决你的问题,请参考以下文章

使用分发密钥保护 excel-vba 应用程序

通过对话框将当前工作簿另存为单独的 Excel 工作簿 [重复]

在Excel中创建工作簿的默认名称是 excel是电子表格软件

使用SQL语句如何对Excel工作表数据进行查询

Excel VBA 从关闭的工作簿中读取数据,带有 ADODB、动态范围和标题可选

通过 ODBC 缓存 DB 访问 Excel - 锁定许可证问题