3

可能重复:
是否可以反编译 C++ Builder exe?C++ Builder exe安全吗?

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

4

4 回答 4

9

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

反编译后变量名、函数名、类名等将不可用。所以反编译器能做的最好的事情就是把你的函数变成这样:

double CalculateWidgetStrength(int WidgetType, int WidgetFrobishness);

变成这样毫无意义的代码:

double Function85(int p1, int p2);

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

于 2013-01-01T20:22:57.013 回答
2

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

int x = 1 - 1;

int x = 0;

在二进制文件中将是等效的,但这并不重要,不是吗?

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

对于特定功能,是的,我想这是有风险的,但不能完全,100% 取出。

于 2013-01-01T20:24:55.910 回答
2

您无法完全保护代码。

恕我直言,您花在保护代码上的时间最好花在使您的产品功能丰富且无错误上,然后再频繁发布。以一种或另一种方式对代码进行混淆可能会引入难以发现的错误,这些错误变得非常难以修复。

于 2013-01-01T20:35:46.217 回答
1

以你暗示的方式保持它“安全”的唯一方法是不部署它,即你做一个网络服务或类似的东西。如果不让执行它的人无法执行它,你就不能让它免受执行它的人的影响。

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

于 2013-01-01T20:32:39.640 回答