从C构建的.exe是否容易受到逆向工程的影响?

时间:2018-05-20 20:16:51

标签: c security exe reverse-engineering

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

有没有办法在确定我的代码时(当然,它永远不会100%安全)它将无法恢复和复制?

2 个答案:

答案 0 :(得分:1)

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

当然可以对生成的机器代码进行反汇编,并且需要通过大量的工作来反向设计代码的功能和工作方式。甚至可以使用专业工具来反编译"并生成可执行文件的高级语言或伪代码表示 - 但它与原始代码几乎没有相似之处,并且不包含任何注释的原始符号名称。

任何中等复杂的软件对于有用的逆向工程来说都是非常困难和耗时的,并且您必须平衡该风险与代码的价值,以及逆向工程对第三方有任何价值的可能性。除非你有一些特别有价值和新颖的IP,否则在大多数情况下,更容易简单地将代码的外部功能视为黑盒并重现功能而不是试图窃取IP。

如果你所关心的是你的同学会复制你的作业 - 这是不可能发生的,也不是他们可以在截止日期之前提交的任何方式。他们自己更容易完成这项工作。如果他们无法做到这一点;他们可能无法对其进行逆向工程 - 因为这可能更难。

答案 1 :(得分:1)

这取决于你的意思:

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

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

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

  4. 混淆可以帮助您购买一些时间。但是,对于第一种和第三种情况,只有非常复杂的方案才会实际延迟逆向工程尝试。