1

我对 Microsoft 如何保护 Sql Server 二进制文件免受逆向工程感兴趣?例如,我也有一些 C++ dll,我想保护它免受逆向工程的影响。将 dll 编译为机器码是合乎逻辑的吗?

4

3 回答 3

4

没有针对逆向工程的技术防御。为了充分观察和理解其功能,始终可以在在线仿真器中运行代码。这是一项非常耗时的工作,但如果回报值得,则可以完成。1990 年代的一个著名例子是Andrew Schulman 的工作,他发现了 Windows 95 API 的隐藏功能。

虽然这种分析没有技术障碍,但该过程的实用性肯定存在法律和实际限制。如果有足够的时间与合格的工程师合作,您可以对任何大型软件包进行完全逆向工程,包括 Microsoft Windows、Office 或 Oracle 数据库二进制文件。您对这项工作的回报将是生产未经许可的非法软件副本的能力。这将没有商业或实用价值。

用于 .NET 或 Java 应用程序的混淆实用程序解决了这些语言的一个特定问题:由于它们支持检查方法和属性名称,因此不仅可以对代码的功能进行逆向工程,还可以对原始代码中使用的公共标识符进行逆向工程。源代码。尽管 C++ 使用符号名进行链接,但它没有同样丰富的可用命名信息,因此不需要混淆。应该注意的是,即使使用公共标识符对代码进行逆向工程,同样的实际和法律限制也适用于该过程。

于 2012-10-21T17:08:52.157 回答
1

混淆您的程序集将为您的 DLL 提供合理的保护。周围有许多令人困惑的软件。您可以更多地了解它们并决定哪一个最适合您。

于 2012-10-21T17:01:13.830 回答
0

dll是机器代码。任何东西都可以逆向工程。他们依靠两件事。所涉及的努力和混淆。

编辑

忘了提到,使用 MS$,您可以获得诸如升级、兼容性之类的东西(为什么您认为它们偶尔会更改 Word 文档的格式等)

于 2012-10-21T17:02:19.007 回答