用于MS Excel VBA的混淆工具

时间:2013-05-27 01:27:34

标签: excel vba obfuscation

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

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

在其他地方读书的几个人是:

  • CrunchCode
  • Obfu-VBA

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

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

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

感谢您的帮助:)

5 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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

  • 重命名

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

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

  • 删除评论

如上所述,这样就无法理解所推断的代码。

  • 换人

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

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

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

在10位受访者中,我是唯一一个猜测操作员超载的人,所以这一直困扰着我。您可以使代码的行为与预期的行为完全不同。可以使加法符号减去,除以或任何其他数量的组合。当代码中的这个基础发生变化时,理解源代码要困难得多。

  • 附加功能

作为额外的一步,我可能会想要在源代码中添加许多冗余方法。基本上是基于条件为真的执行无意义代码的代码片段。这种情况永远不会成立,但由于代码难以阅读,因此很难理解。

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

警告:没有确定的方法来阻止某人窃取您的源代码。我知道有人停止了他们的开源项目,因为人们把它的编译版本作为他们自己的销售。对于开发人员来说,这只是其中之一。混淆将采取一些方式,但不是100%保证阻止一个坚定的开发人员窃取它,但它是一个使它比它值得更麻烦的情况,所以他们有收益递减(例如,他们可以写入相同的功能反向工程代码所需的时间。)

希望这会有所帮助 - 有关更多信息,请查看the YouTube video here(发出非常不祥的音乐!)

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

  

使用这个方便的VBS工具,您可以将VBScript转换为   混淆了VBS源代码,没有妥协/改变   脚本功能和VBScript关键字。这个免费   VBScript Obfuscator通过转换VBS中的每个字符来工作   源代码变成了一种混淆不清的格式。然后这些混淆了   字母在运行时组合并通过执行执行   功能

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

答案 4 :(得分:0)

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