用于MS Excel VBA的混淆工具

Chr*_*ix3 8 obfuscation excel vba

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

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

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

  • CrunchCode
  • Obfu-VBA

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

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

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

谢谢你的帮助 :)

csh*_*ore 3

我之前的答案没有经过充分研究,而且由于没有其他人回复,我认为您应该得到更好的答案。经过测试 CrunchCode,它似乎通过以下技术进行混淆:

  • 重命名

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

大写和小写字母,间距不佳,使其很难阅读。

  • 删除评论

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

  • 代换

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

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

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

在 10 名受访者中,我是唯一一个猜测操作符超载的人,所以这一点一直困扰着我。您可以使代码的行为与预期的完全不同。加法符号可用于减法、除法或任何其他数量的组合。当代码中的某些基本内容发生变化时,理解源代码就会变得更加困难。

  • 附加功能

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

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

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

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