MS Excel VBA 混淆工具

7
有哪些可以混淆VBA代码的工具,包括表单、模块和类模块?
我研究过并在档案中阅读过一些资料,但好像很久没有提到了,所以我认为这些推荐可能已经过时了。
从其他地方阅读到的一些选项是:
- CrunchCode - Obfu-VBA
另外,请纠正我如果我错了,从我的理解来看,混淆器的简化逻辑是:
- 使用定义的逻辑(将X更改为Y)混淆VBA代码。 - 该工具创建一个新的工作簿,其中VBA代码全部被混淆,但其他内容保持不变。 - 该工具可以使用定义的逻辑恢复原始的VBA代码(将Y更改为X)。
这样对吗?在选择“定义逻辑”时,我需要考虑什么?我之前玩过CrunchCode,并且有很多选项,但我都不太懂。
谢谢您的帮助 :)

我制作混淆器(请查看我的简介)。但我不为VBA构建混淆器。初步印象来看,CrunchCode工具在对源代码进行处理方面相当标准,但在我看来还是相当合理的。我不知道它的产品质量如何。(我与他们没有关系) - Ira Baxter
你也可以看看这种工具:https://www.excel-pratique.com/en/vba_tricks/vba-obfuscator.php - JMax
我使用了一个叫做VBASH的工具,它可以可靠地进行VBA混淆。在我看来,它比CrunchCode和Obfu-VBA更好。我建议你试一试。https://www.ayedeal.com/vbash - YeP
vbad应用程序 https://github.com/Pepitoh/VBad - Baouche Iqbal
5个回答

4

我已购买了CrunchCode,但要注意它不支持64位系统。支持非常差(几周内没有任何邮件回复)。字符串加密功能会破坏所有的字符串比较和消息框,因为解密后的字符串与原始字符串不同。建议避免使用此产品!


3
我的上一个回答研究不够充分,而且由于没有其他人回复,我认为你应该得到更好的答案。经过测试CrunchCode,它似乎通过以下技术来混淆代码:
  • 重命名
剥离所有语义并减少推断任何上下文的可能性是最常用的混淆技术。在汇编代码时代,这通常是一个问题,因为除非熟悉代码,否则很难知道代码将要执行什么。

大写和小写字母,间距较差会使阅读变得非常困难。

  • 删除注释
与上述类似,这会消除推断代码含义的机会。
  • 替换
通过使用用户定义函数重载运算符是一种有用的技术。您可以在VBA中执行此操作,我始终记得这是我在面试中被问到的问题:

Sub 1: x = z + y
Sub 2: x = y + z

Sub 2被证明比Sub 1需要更长的时间。为什么?

在10个受访者中,只有我猜到了运算符重载,这一点一直让我难以忘怀。你可以使代码的行为与其应该具有的完全不同。加法符号可以变成减法、除法或任何其他组合。当在代码中改变这种基本特性时,更难理解源代码。
  • 额外内容
作为一个额外步骤,我可能会倾向于在源代码中添加许多冗余方法。实际上,这些是基于某个条件为真而执行无意义代码的代码片段。这个条件从来没有被满足,但由于代码难以阅读,这很难理解。
本质上,它的工作方式与我在过去几年中阅读的所有编码标准完全相反。作为开发人员,你应该做的一切都是为了让你的代码更易读(毕竟我们都应该为其他开发人员编写代码,而不仅仅是为了机器——如果没有人能够理解它,那么将该方法简化为单行有什么用呢?)。
注意:没有一种绝对有效的方法可以阻止某人窃取您的源代码。我知道有些人因为别人将编译版本作为自己的项目出售而停止了他们的开源项目。这对于开发者来说只是其中之一。混淆代码可以在一定程度上起到作用,但不能保证100%阻止决心坚定的开发者窃取它,但这是一个让他们感到不值得的问题,因此收益递减(例如,他们可以在反向工程代码所需的时间内编写相同的功能)。
希望这可以帮助您 - 如需更多信息,请查看此处的YouTube视频(配有非常不祥的音乐!)

从这个内容很难说出CrunchCode实际使用了哪些技术。 - Ira Baxter
1
你可以在VBA中重载"+"运算符吗?具体要编写什么代码来实现这一点? - Ira Baxter
啊,"+" 是操作数重载的一个例子。关键是重载是混淆工具使用的一种技术。这与 CrunchCode 没有特别关系。如果我看起来有点轻率,请原谅,但我认为最好的方法是下载并尝试一下? - csharpforevermore
1
你的意思是,VB6内置的"+"运算符根据其获取的操作数类型而有所不同?好的,我明白了。我以为你在定义一个新的"+"运算符。 - Ira Baxter

1

在线VBScript混淆器(加密/保护VBS)

使用这个方便的VBS工具,您可以将您的VBScript转换为混淆的VBS源代码,而不会影响/改变脚本功能和VBScript关键字。这个免费的VBScript混淆器通过将您VBS源代码中的每个字符转换为一个混淆的格式来工作。然后这些混淆的字母在运行时组合并通过Execute函数执行。

https://isvbscriptdead.com/vbs-obfuscator/


0

如果您不介意一些复制和粘贴以及双重检查产品,vbobfuscator似乎是一个不错的选择。它可以处理vba和vbscript,并更改变量和函数名称。网址为www.vbobfuscator.net。混淆比简单的查找和替换要复杂得多...否则会生成无法工作的代码 ;)


0

只是想补充一下,有一个叫做“VBASH”的工具(www.ayedeal.com/vbash)可以完成这项工作。我已经使用它一段时间了,到目前为止感觉很满意。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接