【问题标题】:Protect C++ program against decompiling [duplicate]保护 C++ 程序免受反编译 [重复]
【发布时间】:2012-12-16 08:06:56
【问题描述】:

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

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

【问题讨论】:

  • 不安全,永远不可能安全
  • 您必须以某种方式强制链接器生成不可读的代码编号。比如你可以尝试对二进制文件进行分片,这会产生在几个文件中,它们之间很难联系。
  • 小提示:字符串文字总是可检索的(通常只需很少的努力)。因此,如果您想隐藏密码,请忘记它。
  • 感谢大家的帮助,帮助我消除了疑惑

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


【解决方案1】:

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

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

double CalculateWidgetStrength(int WidgetType, int WidgetFrobishness);

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

double Function85(int p1, int p2);

对于反编译器来说,即使做到如此准确也非常困难。

【讨论】:

  • 很抱歉 :) 但是,这些名称不会在托管系统中删除。 Java 档案仍按原样包含所有类、字段和方法名称,除非您对它们进行混淆处理。在这些情况下,这些转换可能会有所帮助,但训练有素的眼睛(或足够聪明的反编译器)可能会从其结构中得出函数的用途,进而从其用途中得出名称。
  • @Tinctorius 是的,但这个问题与 Java 无关;-)
  • @DavidHeffernan +1 ,但请注意,从 WinDbg 或 api 监视器(如果应用程序使用网络流量,则使用网络嗅探器)对应用程序进行逆向工程始终是可能的。这一切都归结为某人想要投入多少时间和精力来做这样的事情。不过一直都在发生。
  • @johnathon 逆向工程和反编译到源代码不是一回事。我很清楚其中的区别。而且我知道试图阻止逆向工程、破解等是多么徒劳。
  • @DavidHeffernan 我知道,只是想你可能想在你的回答中提到这一点,最终 OP 关心的是知识产权。
【解决方案2】:

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

int x = 1 - 1;

int x = 0;

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

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

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

【讨论】:

    【解决方案3】:

    您无法完全保护代码。

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 2012-06-17
        • 2011-01-29
        • 2015-09-18
        • 1970-01-01
        • 1970-01-01
        • 2017-03-26
        • 1970-01-01
        • 2012-07-27
        • 1970-01-01
        相关资源
        最近更新 更多