我一直在进行一些混淆研究,我想知道优化对于混淆代码的效果如何。
优化代码会从程序集中删除有助于某人对代码进行反向工程的东西吗?
更一般地说,代码的优化会使程序集难以理解?一般答案都很好,我只是想了解两者之间的相关性,如果有的话。
编辑:这不是针对客户的,这是为了娱乐混淆和好奇心
答案 0 :(得分:2)
代码混淆可能意味着不同的事情。通常,它指的是使代码更难或不可读的技巧。
没有与优化有关的混淆结果。您可能正在考虑更简洁的代码,在某些情况下(或者,至少用于)使代码更难以阅读和更有效地运行。但是今天的编译器通常情况并非如此,而且实际上与混淆无关。
答案 1 :(得分:2)
在向客户提供二进制可执行文件或库时,混淆C ++代码几乎没有意义。
混淆通常用于解释语言以阻碍逆向工程。然后由软件完成,以便原始代码可读/可维护。
至于影响表现。混淆通常为变量/函数提供随机和无意义的名称以及删除空格。这不会影响C编译的二进制文件。因此根本不会有任何区别。