所以我的 Excel-VBA 项目密码很容易被破解……还有啥其他选择?
Posted
技术标签:
【中文标题】所以我的 Excel-VBA 项目密码很容易被破解……还有啥其他选择?【英文标题】:So my Excel-VBA project password can easily be cracked... What are other options?所以我的 Excel-VBA 项目密码很容易被破解……还有什么其他选择? 【发布时间】:2010-11-06 23:34:58 【问题描述】:既然我知道在锁定和密码保护 VBA 代码的 standard way 中存在 easy workaround,我想继续讨论更有效的代码保护方法。我要向客户提供一个基于 Excel 的工具,但我想要的不仅仅是简单的烦恼类型的保护,它只会阻止最懒惰的黑客。
Excel-VBA 中是否有任何选项,或者我们真的必须编译一个单独的应用程序而忘记我们基于 Excel 的界面?
【问题讨论】:
如果您正在寻找 VBA 混淆器,我建议您查看一个名为 VBASH 的工具。恕我直言,它比 CrunchCode 和 Obfu-VBA 更好,而且绝对比密码保护更好。 ayedeal.com/vbash 【参考方案1】:最简单、最有效的方法是将您的 VBA 代码移动到 VB6 编译的 Com/automation 插件中。
或者,如果性能不重要,您可能需要考虑使用 .Net(带有混淆器)解决方案。
【讨论】:
+1。当我查看保护我认为商业化的插件的各种方法时,我打算使用 com 方法。这显然是最安全的选择。我认为混淆可以非常有效【参考方案2】:另一个技巧是在 Access 中针对 excel 对象编写代码,然后将访问文件放入 .mde http://www.blog.methodsinexcel.co.uk/?s=Access+MDB 可怜,但便宜 ;-)
【讨论】:
给定的链接坏了,试试这个databasedev.co.uk/microsoft-access-mde.html。看起来很有希望。【参考方案3】:无需转换为另一种语言 - 您应该能够通过 www.vbsobfuscator.com 混淆大部分 VBA 代码 [注意:指向 archive.org 的链接]
【讨论】:
这现在是一个死链接,被一个带有可疑网站链接的网站占用者接管。 我找不到当前版本,因此我编辑了帖子以链接到该站点的最新可用 archive.org 副本。但是,我没有测试该站点的实际混淆器功能是否仍然有效。【参考方案4】:实际上,VBA 混淆器不保护 VBA 代码,因为它们保持算法结构不变,可以追溯到原始算法,然后可以恢复。
将您的VBA代码转换为VB6意味着您的应用程序将被限制为32位Excel(VB6没有64位版本)并且可以通过VB反编译器例如https://www.vb-decompiler.org/进行反编译
将 VBA 代码转换为 VB.NET 也不是一个完美的解决方案,因为 .NET 具有“反射”机制,可以将 .NET 程序集的编译代码转换为原始源代码.
您可以将 VBA 代码转换为 C/C++,这将是一种非常有效的保护形式,但由于 C/C++ 和 VBA 是非常不同的编程语言,因此将 VBA 代码转换为C/C++ 很困难,容易出错,而且通常不值得花费大量的时间和精力。
有一个名为 VbaCompiler for Excel (http://vbacompiler.com) 的工具可以将 VBA 代码转换为 C 语言代码,然后将其编译成 DLL。此工具声称提供的保护级别类似于将您的 VBA 代码转换为 C/C++ 的保护级别,但无需此类过程所需的大量手动工作。
【讨论】:
以上是关于所以我的 Excel-VBA 项目密码很容易被破解……还有啥其他选择?的主要内容,如果未能解决你的问题,请参考以下文章