在混淆 C++ 代码中使用优化

Use of optimization in obfuscating C++ code

我一直在研究混淆,我想知道优化对混淆代码的效果如何。

优化代码是否会从程序集中删除有助于某人对代码进行逆向工程的东西?

更一般地说,代码优化如何使程序集更难理解?笼统的回答就好,我只是想了解一下两者之间的相关性,如果有的话。

编辑:这不是给客户的,这是为了消遣混淆和好奇

代码混淆可能意味着不同的事情。通常,它指的是使代码更难阅读或无法阅读的技巧。

没有专门与优化相关的混淆结果。您可能会想到更简洁的代码,这些代码在某些情况下(或者,至少曾经)可以使代码更难阅读并 运行 更有效。但对于今天的编译器来说,情况通常不是这样,而且真的与混淆无关。

在向客户交付二进制可执行文件或库时混淆 C++ 代码毫无意义。

混淆通常用于解释性语言以阻碍逆向工程。然后这是通过软件完成的,所以原始代码是 readable/maintainable.

至于影响性能。混淆通常会给出 variables/functions 随机且无意义的名称,同时删除白色 space。这不会影响 C 编译的二进制文件。因此根本不会有任何区别。