1

我使用 Microsoft Visual Studio 2012,我想用原生 C++ 编写一个应用程序。我不想使用 Manged Code (.NET) 的原因是因为我不希望我的应用程序被使用 .NET Reflector 之类的工具反编译回源代码,但如果我仍然可以使用它会很好我的应用程序中的 UI(CLR Windows 窗体)。

但是当我将 UI(CLR Windows 窗体)添加到我的 Win32 项目时,会弹出此消息:

信息

这是否意味着从现在开始我的所有项目都不会被编译为本机代码,并且有可能使用 .NET Reflector 等工具反编译整个应用程序?

或者它将是“混合”(本机代码+托管代码)项目,并且无法使用诸如.NET Reflector之类的工具对整个应用程序进行反编译,而只有其中一部分负责UI?

PS 是的,我知道任何应用程序都可以被反编译(!!!),但我询问的是基于 .NET 的应用程序的反编译工具。使用 .NET Reflector,您可以从 .NET 应用程序中“取回原始源代码”。所以我的问题是,是否有可能从此应用程序“取回原始源代码”,或者它会以某种方式“混合”代码(管理 + 本机)并且不可能将其反编译回原始代码带有.NET Reflector 之类的工具的源代码?

4

1 回答 1

5

如果“反编译”意味着“取回原始源”,在可执行文件中没有任何符号表的情况下,这是不可能的。

如果“反编译”的意思是“得到一个用户可修改的代码,它在语义上等同于原始代码,并且可以被编译回可执行程序”,那么这总是可能的(即使直接修改机器代码本身:有人理解它! )。这对于广大观众来说是如何理解的,那是另一回事了。

营销的一般规律说:“唯一不能复制的就是永远卖不出去的!” 这是与软件的物理性质有关的问题。没有解决方法(除了为另一个宇宙工作)

于 2013-01-09T15:57:03.317 回答