保护C++程序免受反编译
Protect C++ program against decompiling
可能重复:
是否可以反编译C++Builder exe?C++Builder exe安全吗?
我使用Microsoft Visual C++2010学习版编写程序。当我想分发我的程序时,我用"Release"配置编译它,还将链接器设置为不添加调试信息。所以我的问题是,我的可执行文件是安全的,还是任何人都可以反编译并查看源代码?如果它不安全,我如何防止它被反编译?
所有程序都可以进行一定程度的反编译。但是,在编译过程中会删除源代码中的大量有用信息。反编译器生成的源代码是对原始代码的苍白模仿。
反编译后,变量名、函数名、类名等将不可用。因此,反编译器能做的最好的事情就是把你的函数变成这样:
double CalculateWidgetStrength(int WidgetType, int WidgetFrobishness);
转换成这样毫无意义的代码:
double Function85(int p1, int p2);
对于一个反编译器来说,即使成功地做到这一点也非常困难。
有人能反编译它以查看原始源代码吗?不太可能,但原始源代码并没有那么重要。例如:
int x = 1 - 1;
和
int x = 0;
在二进制文件中是等效的,但这并不重要,是吗?
对于一个足够大的项目来说,反编译并不是一个真正的问题,因为你不能真正利用生成的代码。考虑到你从知识转移、文档和正确命名中受益,即使是大型项目的一小部分也需要数年时间才能了解。我想仅仅使用反编译器是不可能的。
对于特定的功能,是的,我想这是有风险的,但不能完全、100%地消除。
您无法完全保护代码。
IMHO你花在保护代码上的时间最好花在让你的产品功能丰富和无错误上,而不是频繁发布。以这样或那样的方式混淆代码有可能引入难以找到的错误,这些错误变得非常难以修复。
以您所暗示的方式保持其"安全"的唯一方法是不部署它,即您执行web服务或类似的操作。如果不让执行它的人无法执行,你就无法使它免受执行它的人员的伤害。
考虑到你已经完成的反编译需要大量的精力,我的问题是。为什么有人会这么麻烦,因为这可能需要比简单地"滚动自己的"更多的精力