我之前的答案没有得到很好的研究,因为没有其他人回答,我认为你应该得到更好的答案。在测试了 CrunchCode 之后,它似乎通过以下技术进行了混淆:
第一个混淆技术是剥离所有语义并降低推断任何上下文的可能性。在汇编代码时代,这通常是一个问题,除非您熟悉它,否则很难判断代码将要做什么。
大写和小写字母,间距很差,很难阅读。
如上所述,这消除了理解被推断代码的机会。
运算符的重载(通过使用用户定义函数)是一种有用的技术。你可以在 VBA 中做到这一点,我一直记得这是我在面试中被问到的一个问题:
子 1:x = z + y
子 2:x = y + z
Sub 2 被证明比 sub 1 花费更长的时间。这是为什么呢?
在 10 位受访者中,我是唯一一个猜测操作员超载的人,所以这一直困扰着我。您可以使代码的行为与应有的行为截然不同。加法符号可用于减法、除法或任何其他数量的组合。当代码中这个基本原理发生变化时,理解源代码就变得更加困难。
作为附加步骤,我可能会想在源代码中添加许多冗余方法。本质上是基于条件为真执行无意义代码的代码片段。这个条件永远不会成立,但是因为代码很难阅读,所以很难理解。
从本质上讲,它的工作方式与我过去几年读过的所有编码标准完全相反。作为开发人员,您应该做的所有事情以使您的代码更具可读性(毕竟,我们都应该为其他开发人员编写我们的代码,而不仅仅是为机器编写代码 - 谁在乎如果没人能理解,您可以将该方法简化为一行它?)。
警告:没有可靠的方法来阻止某人窃取您的源代码。我知道有些人停止了他们的开源项目,因为人们将它的编译版本作为他们自己的版本出售。对于开发人员来说,这只是其中之一。混淆会在某些方面发挥作用,但不能 100% 保证阻止坚定的开发人员窃取它,但这是一种让它变得比其价值更麻烦的情况,因此他们的收益递减(例如,他们可以在对代码进行逆向工程所需的时间)。
希望这会有所帮助 - 有关更多信息,请查看此处的 YouTube 视频(带有非常不祥的音乐!)