保护C ++程序不受反编译

时间:2013-01-01 20:20:20

标签: c++ windows obfuscation decompiling source-code-protection

  

可能重复:
  Is it possible to decompile C++ Builder exe? Is C++ Builder exe safe?

我使用Microsoft Visual C ++ 2010 Express编写程序。当我想分发我的程序时,我使用'Release'配置编译它,我也设置链接器不添加调试信息。所以我的问题是,我的可执行文件是安全的还是任何人都可以反编译它并查看源代码?如果它不安全,我该如何防止它被反编译?

4 个答案:

答案 0 :(得分:9)

所有程序都可以在一定程度上反编译。但是,在编译期间会删除源代码中的大量有用信息。反编译器生成的源代码是对原始内容的模仿。

反编译后,变量名,函数名,类名等将不可用。因此,反编译器可以做的最好的事情就是将你的函数看起来像这样:

double CalculateWidgetStrength(int WidgetType, int WidgetFrobishness);

进入这样无意义的代码:

double Function85(int p1, int p2);

对于反编译器来说,即使成功地做到这一点也非常困难。

答案 1 :(得分:2)

任何人都可以反编译它以查看原始源代码吗?不太可能,但原始源代码并不重要。例如:

int x = 1 - 1;

int x = 0;

在二进制文件中是等价的,但它并不重要,是吗?

对于一个足够大的项目,反编译并不是真正的问题,因为你无法真正利用生成的代码。考虑到您从知识转移,文档和正确命名中获益,需要花费数年才能了解大型项目的一小部分。我想用反编译器是不可能的。

对于特定的功能,是的,我认为存在风险,但不能完全,100%被取出。

答案 2 :(得分:2)

您无法完全保护代码。

恕我直言,您花在保护代码上的时间最好花在使您的产品功能丰富且无错误,然后经常发布。使代码以某种方式进行模糊处理有可能引入难以找到的错误。

答案 3 :(得分:1)

以你所暗示的方式保持“安全”的唯一方法就是不要部署它,即你做网络服务或其他类似服务。 你不能让那些执行它的人安全无法执行它。

鉴于你已经完成的反编译需要付出巨大的努力,我的问题就是。为什么会有人打扰,因为它可能需要更多的努力,而不仅仅是“滚动你自己的”