C语言代码模糊处理教程
我对人们混淆代码(主要是C)的方式很感兴趣(这里的例子是:),我想学习同样的各种技术。有人告诉我有一本书,“模糊C和其他谜团”,但我没能得到那本书。 有没有关于这个主题的教程或书籍?C语言代码模糊处理教程,c,obfuscation,C,Obfuscation,我对人们混淆代码(主要是C)的方式很感兴趣(这里的例子是:),我想学习同样的各种技术。有人告诉我有一本书,“模糊C和其他谜团”,但我没能得到那本书。 有没有关于这个主题的教程或书籍? 多谢各位 你所能做的就是阅读IOCCC节目作者的评论。它们描述了它们如何设法混淆代码。以下是几点建议: 简短而无意义的标识符 因为a=aaa*aa总是比结果=值*因子更模糊 为了获得简短的标识符,混淆器甚至倾向于定义许多东西 反向数组索引 你只需要记住,var[3]和3[var]是等价的 有向图与三角图 (a<p
多谢各位 你所能做的就是阅读IOCCC节目作者的评论。它们描述了它们如何设法混淆代码。以下是几点建议: 简短而无意义的标识符 因为
a=aaa*aa代码>总是比结果=值*因子更模糊代码>
为了获得简短的标识符,混淆器甚至倾向于定义许多东西
反向数组索引
你只需要记住,var[3]
和3[var]
是等价的
有向图与三角图
<代码>(a<p>Mordn的答案很好地掩盖语法的混淆),但是还有另一个层次,那就是语义混淆。考虑到经常提到的图灵机具有与任何其他编程语言相同的计算能力(忽略输入和输出的考虑)。.事实上,所有各种计算模型都有具有等效功率的兄弟模型
例如,字符串char s[N]
可以被视为从索引到字符的映射,因此任何字符串都可以由一个函数来表示,该函数在使用指定的索引char f(int i)调用时始终提供适当的字符
。现在读吧。疯狂,对吧?我不认为有一种通用的技术可以实现这一点……必须要有创造性。大量的模糊处理。@MichaelBurr哦,是的,递归文件包含在X宏中,以完全模糊的方式生成一些代码。@Morwenn:它不需要像X宏那么重-你经常会看到普通的老马cro定义在模糊的代码条目中。例如,重新定义关键字会让阅读程序变得非常痛苦:#define char k['a']
@MichaelBurr,但我已经在第二点中谈到了#define
定义内容:)@Morwenn:我明白了。我错过了它,因为它不是“顶级”物品。@Morwenn我知道你提到的要点。我在寻找细节。谢谢你。不错的链接,顺便说一句:)