7

有哪些工具可以在表单、模块和类模块之间混淆 VBA 代码?

我做了一些研究并在档案中阅读了这里的内容,但有一段时间没有提到任何内容,所以我认为这些建议可能已经过时了。

从其他地方阅读的一些内容是:

  • 紧缩代码
  • Obfu-VBA

另外,如果我错了,请纠正我,但根据我的理解,混淆器的简化逻辑是:

  • 使用定义的逻辑对 VBA 代码进行加扰(将 X 更改为 Y)
  • 该工具会创建一个新的工作簿,其中 VBA 代码全部被打乱,但其他一切都保持不变。
  • 该工具可以使用定义的逻辑恢复到原始 VBA 代码(将 Y 更改为 X)

那是对的吗?选择“定义的逻辑”时需要注意什么?我以前玩过 CrunchCode,有很多选择,但它们对我来说都是陌生的。

谢谢你的帮助 :)

4

5 回答 5

4

我已经购买了 CrunchCode 并注意它不支持 64 位系统。支持真的很糟糕(几周内没有任何电子邮件回复)。字符串加密功能将搞砸所有字符串比较和 MsgBox,因为解密的字符串与原始字符串不同。建议避免使用此产品!

于 2015-07-04T04:18:07.583 回答
3

我之前的答案没有得到很好的研究,因为没有其他人回答,我认为你应该得到更好的答案。在测试了 CrunchCode 之后,它似乎通过以下技术进行了混淆:

  • 重命名

第一个混淆技术是剥离所有语义并降低推断任何上下文的可能性。在汇编代码时代,这通常是一个问题,除非您熟悉它,否则很难判断代码将要做什么。

大写和小写字母,间距很差,很难阅读。

  • 删除评论

如上所述,这消除了理解被推断代码的机会。

  • 替代

运算符的重载(通过使用用户定义函数)是一种有用的技术。你可以在 VBA 中做到这一点,我一直记得这是我在面试中被问到的一个问题:

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

Sub 2 被证明比 sub 1 花费更长的时间。这是为什么呢?

在 10 位受访者中,我是唯一一个猜测操作员超载的人,所以这一直困扰着我。您可以使代码的行为与应有的行为截然不同。加法符号可用于减法、除法或任何其他数量的组合。当代码中这个基本原理发生变化时,理解源代码就变得更加困难。

  • 附加功能

作为附加步骤,我可能会想在源代码中添加许多冗余方法。本质上是基于条件为真执行无意义代码的代码片段。这个条件永远不会成立,但是因为代码很难阅读,所以很难理解。

从本质上讲,它的工作方式与我过去几年读过的所有编码标准完全相反。作为开发人员,您应该做的所有事情以使您的代码更具可读性(毕竟,我们都应该为其他开发人员编写我们的代码,而不仅仅是为机器编写代码 - 谁在乎如果没人能理解,您可以将该方法简化为一行它?)。

警告:没有可靠的方法来阻止某人窃取您的源代码。我知道有些人停止了他们的开源项目,因为人们将它的编译版本作为他们自己的版本出售。对于开发人员来说,这只是其中之一。混淆会在某些方面发挥作用,但不能 100% 保证阻止坚定的开发人员窃取它,但这是一种让它变得比其价值更麻烦的情况,因此他们的收益递减(例如,他们可以在对代码进行逆向工程所需的时间)。

希望这会有所帮助 - 有关更多信息,请查看此处的 YouTube 视频(带有非常不祥的音乐!)

于 2014-10-13T10:09:03.020 回答
0

如果您不介意一些复制和粘贴并仔细检查产品 vbobfuscator 似乎很好。是否同时使用 vba 和 vbscript。更改 var 和函数名称。www.vbobfuscator.net 。混淆比简单的查找和替换要复杂得多......这将提供非工作代码;)

于 2015-07-24T15:22:55.377 回答
0

只想添加一个名为“VBASH”(www.ayedeal.com/vbash)的工具可以完成这项工作。我已经使用了一段时间,到目前为止对它很满意。

于 2018-10-09T21:48:51.333 回答
0

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

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

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

于 2017-04-27T15:14:17.830 回答