C++.Net程序集可以很容易地反编译吗

Could C++.Net assemblies be decompiled easily?

本文关键字:编译 很容易 Net 程序集 C++      更新时间:2023-10-16

我知道所有程序集都可以以某种方式反编译,但C#&VB应用程序最容易使用(.Net Reflector)等工具反编译成源代码。

因此,我的问题是,如果我用C++使用.Net程序集和函数编程一个应用程序,是否会很容易将其反编译为使用.Net反射器和此类工具的C#或VB应用程序?好吧,如果我在不使用.Net框架中的任何函数的情况下对其进行编程,并使UI只调用.Net程序集,那么去编译也会很容易吗?

我的问题与此类似:这个C++项目可以用.NET Reflector这样的工具反编译吗?但是没有人答对他,有人能帮我吗?

我想使用.Net和C++将我的应用程序编译成Native&托管代码!

没有"C++.Net"。有C++/CLI,这是一种类似C++的语言,可以用来将本机C++代码与.Net世界粘合在一起。您在其中编写的托管代码(ref类)将被编译为MSIL。"本机"代码将编译为MSIL或本机代码。如果你想把一些部分编译成本地代码,你需要

#pragma managed(push, off)
void foo() {}
#pragma managed(pop)

在您的来源中。托管杂注可用于为每个函数选择编译目标。或者,您可以在每个模块不使用/clr标志的情况下进行编译,并将项目设置为生成混合模式程序集。

请注意,将本机类型封送至.NET并返回可能会对应用程序的性能造成严重影响,而且这种情况在每次跨越本机托管边界时都会发生。但是这种嵌入式本地代码和托管代码之间的互操作比普通的p/invoke快得多。

另请参阅此问题:C++CLI。本机部分是用纯C++编写的,但在CLI中编译的速度是否与纯本机C++一样快?