C/C++编译器生成混淆代码

21

是否有已知的C/C++编译器可以生成混淆/干扰的代码?或者像GCC这样的开源C/C++编译器是否有任何补丁可用?


11
-O3 很难理解。 - Anycorn
9
嗯,C和C++编译器生成的机器代码已经相当晦涩难懂了。想一想,我见过的一些C和C++代码已经非常混乱了... :-P - In silico
2
嗯... .NET 和 Java 字节码比任何真正的汇编语言都要高级得多,因此更容易映射回源代码结构。我觉得这有点傻 - 就像分发一个 shell 脚本但希望它是“不可读的”。 - Nikolai Fetissov
4
是的,人们可以逆向工程您的二进制文件。那又怎样?如果他们非常想要,他们也能够逆转您的混淆。当这种方法失败时,他们会派几个重量级大猩猩来到你家,你就会告诉他们所有的隐秘真相。 这里没有意义。如果这是一个秘密 - 就自己保留。 如果您将其提供给其他人-它就不再是一个秘密了。 - Nikolai Fetissov
18
我可以为您翻译关于存在此事物的问题吗?您只需要得到答案即可。 - user313885
显示剩余7条评论
3个回答

4
您可以使用http://www.pelock.com/products/obfuscator来混淆汇编代码。您可以将代码编译为汇编语言(在这种情况下是MASM风格),然后再进行混淆处理。
编辑:根据我的经验,使用许多虚函数/间接引用和/或解释器(即为某些处理步骤创建自己的迷你字节码)作为代码的一部分会产生相当难以逆向的代码。

"你可能可以编译成汇编语言(在这种情况下是MASM风格)。" 有任何教程吗?" - FLASHCODER

2

任何能够通过__COUNTER__生成类似于伪随机数的编译器,并可以通过__emit将字节注入到内联汇编流中的编译器,都可以执行内联代码混淆。这与外部打包程序和混淆工具完全不同,这可能是一个优势。其“强度”主要取决于您放入多少元编程,但显然您永远无法加密IAT等。


有任何相关的示例吗? - Zibri
@Zibri http://blog.sevagas.com/?Fun-combining-anti-debugging-and 然后你所需要做的就是使用__emit __COUNTER__代替固定指令。 - Necrolis

-1

另一种方法可能是在受保护的虚拟机环境中运行可执行文件。ZProtect -- 一个我没有使用过也不代表认可,但是通过使用“我感到幸运”的谷歌搜索发现的产品 -- 它声称提供多层代码保护(虚拟机、加密、混淆等)。

如果有人真的非常想知道你是如何做某件事的,他们会找出来的 -- 如果这是知识产权盗窃,那就请一位好律师。如果这是加密,那就使用被业界证明过的方法。而如果这是数字版权管理(DRM),那么这个战斗已经转移到硬件(和root工具包)了。


3
DRM是一场变得越来越愚蠢的斗争。盗版者最终会获胜。任何其他知识产权也是如此,一旦离开你的控制,只是时间问题,直到有人完全将其掌控。 - BCS
2
这不是我认为的答案。 - MLSC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接