防止逆向工程C ++二进制文件

时间:2012-09-12 06:05:13

标签: c++ reverse-engineering

我已经阅读了几篇关于这个主题的文章this one,并实现了大部分描述的技术。但我还想在二进制文件中添加一些额外的未引用/未使用的代码。理想情况下,我希望能够通过工具将此代码添加到构建的二进制文件中。有这样的工具吗?关于如何构建这样一个工具的任何想法?或者如何生成并向我的C ++程序添加一些从未使用过的代码?我应该把它放在哪里?

在对Skype内部的分析中,我读到他们尽可能地弄乱了代码。实现它的一种方法是动态计算每个调用:

if ( sin(a) == 42 ) {
   do_dummy_stuff () ;
}

我应该进入虚拟功能吗?或虚函数是从未使用过的代码?

更新:我想将未使用的代码添加到二进制文件的原因是因为我们发布了许多电子书。我希望每个人的二进制文件都有所不同,所以如果一个人受到损害,其他人就不会(至少不是马上就会)。

2 个答案:

答案 0 :(得分:4)

如果我说对了你,你说的是obfuscation

Stackoverflow上的

This question涵盖了该主题。有很多软件混淆了C ++代码,快速谷歌搜索显示了很多这样的应用程序,例如thisthis

答案 1 :(得分:3)

  

有这样的工具吗?

是的,有。它被称为具有适当参数的编译器,并向其添加链接器。添加到此组合strip,您将获得一个合适的库。

严肃地说,there are no ways to prevent reverse engineering。你只能让饼干变得更难(或者更烦人)。你可以看一下this article(spyro的开发者尝试各种盗版保护)