我对人们混淆他们的代码(主要是C语言)的方式感到着迷(这里有一些例子:http://ioccc.org/),我想学习相应的技巧。我听说过一本名为“Obfuscated C and other Mysteries”的书,但我找不到这本书。
是否有任何教程或书籍可以提供关于这个主题的提示?
谢谢。
a = aaa * aa;
总是比result = value * factor;
更加模糊。#define
定义许多东西。
var [3]
和3 [var]
是等效的。
if(a< <:b+aa??))??<f();%>
应该比以下内容更难读取:
if (a < (b+aa)) { f(); }
l
,1
和I
或o
,0
和O
.例如,如果你写10l
,我敢打赌每个人都会读成101
。
#define char k['a']
- Michael BurrMorwenn的回答很好地涵盖了语法混淆。但还有另一层面,那就是语义混淆。考虑经常提到的图灵机与任何其他编程语言具有相同的计算能力(忽略输入和输出方面的考虑)。事实上,所有各种计算模型都有等效能力的姊妹模型。
例如,一个字符串char s[N]
可以被视为从索引到字符的映射,因此任何字符串都可以通过一个函数来表示,该函数在调用指定索引char f(int i)
时始终返回适当的字符。现在阅读这篇文章。疯狂吧?