Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是用于堆栈溢出的on-topic。
已关闭8年。
Improve this question
我对Microsoft如何保护Sql Server二进制文件免受逆向工程感兴趣?
例如,我也有一些C++ dll,我想保护它免受逆向工程。 dll被编译为机器代码是逻辑上的事情吗?
想改善这个问题吗? Update the question,所以它是用于堆栈溢出的on-topic。
已关闭8年。
Improve this question
我对Microsoft如何保护Sql Server二进制文件免受逆向工程感兴趣?
例如,我也有一些C++ dll,我想保护它免受逆向工程。 dll被编译为机器代码是逻辑上的事情吗?
最佳答案
没有针对逆向工程的技术防御。为了充分观察和理解其功能,总是可以在在线仿真器中运行代码。这是非常耗时的工作,但是如果值得付出,就可以完成。 1990年代的一个著名示例是Andrew Schulman's work,它揭示了Windows 95 API的隐藏功能。
尽管这种分析没有技术上的障碍,但是对于该过程的实用性当然存在法律和实践上的限制。只要有足够的时间与合格的工程师一起,您就可以完全反向工程任何大型软件包,包括Microsoft Windows,Office或Oracle数据库二进制文件。您为此付出的努力将是能够产生未经许可的,非法的软件副本。这将没有商业或实用值(value)。
用于.NET或Java应用程序的混淆实用程序解决了这些语言的特定问题:由于它们支持检查方法和属性名称,因此不仅可以对代码功能进行反向工程,还可以对原始语言中使用的公共(public)标识符进行反向工程。源代码。尽管C++使用符号名称进行链接,但是它没有可用的丰富命名信息,因此不必进行混淆。应该注意的是,即使代码是使用公共(public)标识符进行反向工程的,同样的实践和法律限制也适用于该过程。
10-08 05:13