15

既然我知道锁定和密码保护 VBA 代码的标准方法有一个简单的解决方法,我想继续使用更有效的代码保护方法。我要向客户提供一个基于 Excel 的工具,但我想要的不仅仅是简单的烦恼类型的保护,它只会阻止最懒惰的黑客。

Excel-VBA 中是否有任何选项,或者我们真的必须编译一个单独的应用程序而忘记我们基于 Excel 的界面?

4

4 回答 4

8

最简单和最有效的方法是将您的 VBA 代码移动到 VB6 编译的 Com/automation 插件。

或者,如果性能不重要,您可能需要考虑使用 .Net(带有混淆器)解决方案。

于 2009-07-01T16:26:29.293 回答
2

另一个技巧是针对 Access 中的 excel 对象编写代码,然后将访问文件放入 .mde http://www.blog.methodsinexcel.co.uk/?s=Access+MDB 很差,但是很糟糕;-)

于 2009-12-03T15:43:27.433 回答
2

无需转换为另一种语言 - 您应该能够通过www.vbsobfuscator.com混淆大部分 VBA 代码[注意:指向 archive.org 的链接]

于 2012-04-02T09:45:02.897 回答
2

实际上,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++ 的保护级别,但无需此类过程所需的大量手动工作。

于 2018-03-23T18:39:23.637 回答