【问题标题】:Is an .exe, built from C, vulnerable to reverse engineering?从 C 构建的 .exe 是否容易受到逆向工程的影响?
【发布时间】:2018-10-30 12:41:48
【问题描述】:

我想导出我的 C 代码并展示它的能力。 我在许多参考资料中看到.exe 文件可以使用逆向工程来恢复。

有没有一种方法可以演示我的代码,同时确保(当然,它永远不会 100% 安全)它不会被恢复和复制?

【问题讨论】:

  • 取决于您所说的“恢复”是什么意思。如果应用程序足够复杂并且启用了优化,则原始源代码/设计会得到合理的“保护”;但您无法真正保护数据或对其行为的更改(不过,有一些方法可以让这变得更复杂)。
  • 我只是三年级的学生,有了一个想法,担心在我发表之前有人会接受它。这有什么奇怪的?
  • @Acorn 怎么样?而且它不应该那么复杂。
  • 在我们大三的时候,我们不得不反编译程序。
  • @Zooly92:应用程序越简单,就越容易发现它在做什么——即使启用了优化。这取决于你的想法是关于什么的。例如,如果你试图保护一种革命性的算法,那么你应该考虑混淆它。如果您只想保护源代码,那么使用优化对其进行编译可能就足够了。

标签: c security exe reverse-engineering


【解决方案1】:

这取决于你的意思:

  1. 如果您想保护算法(即在软件中实现的新想法),那么保护它的唯一真正方法就是永远不要共享实际文件。换句话说,仅在您控制的硬件上进行演示。

  2. 如果您想保护源代码或原始设计,那么通常在启用优化的情况下进行编译对于大多数情况来说已经足够了。如果需要,潜在的竞争对手将能够从头开始编写代码——通过逆向工程对他们没有太大的好处。

  3. 如果您想保护其运行时行为(例如禁用许可证检查)或其数据(例如资产),请参阅第一点 - - 同样适用。

不过,混淆可以帮助您赢得一些时间。但是,对于第一种和第三种情况,只有非常复杂的方案才会真正延迟逆向工程尝试。

【讨论】:

  • 我的意思是保护源代码。我会看看如何使用编译和优化。非常感谢!
【解决方案2】:

无法从已编译的可执行文件中恢复原始源代码;就像用煎蛋做鸡蛋是不可能的一样。

当然可以对生成的机器代码进行反汇编,然后通过大量精力逆向工程该代码的作用和工作方式。甚至可以使用专业工具“反编译”并生成可执行文件的高级语言或伪代码表示 - 但它与原始代码几乎没有相似之处,并且不包含 cmets 的原始符号名称。

任何中等复杂的软件都很难有效地进行逆向工程,而且非常耗时,您必须平衡这种风险与代码的价值,以及逆向工程对第三方有任何价值的可能性。除非您有一些特别有价值和新颖的 IP,否则在大多数情况下,将代码的外部功能简单地观察为黑盒并复制功能比试图窃取 IP 更容易。

如果您所担心的只是您的同学会抄袭您的作业 - 这是不可能发生的,他们不可能以任何方式在截止日期前提交。他们自己做工作会更容易。如果他们无法做到这一点;他们可能无法对其进行逆向工程——因为这可能更难。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    相关资源
    最近更新 更多