像 C++ 一样编译 C#?

逆向工程 C++ 编译器 C#
2021-07-09 02:20:41

阅读的来龙去脉后编制的差异之间C#C++,我的问题是,不能我们编译C#与Visual Studio应用程序(或DLL)(或其他程序),所以同样C++它在编译过程中剥离出来很多的信息和提供的应用程式,其将很难像C++文件一样反编译

1个回答

有多种选择:

  • 可以使用 Ngen.exe 或 .NET Native 将 C# 代码编译为本机代码(如 C++ 编译)。尽管运行时可能仍需要 IL 代码和元数据。
  • 程序集中包含的所有类型的信息,例如类型名称、变量名称、方法名称、字符串和常量,都可以被混淆。这使得仅通过查看其名称就难以猜测构造的目的。这使得程序集更像是一个去除了调试信息的本机二进制文件,除了 IL 代码通常比本机代码更容易反编译。IL 指令不容易混淆。
  • 混淆或加密包括 IL 代码在内的所有“托管”内容,并修改程序集的本机入口点,以便它调用本机函数,该函数将反混淆或解密(可能是按需或按需)IL 代码和元数据。本机函数可以调用外部本机库来完成这项工作。这显然使反编译比反编译普通的本机代码要困难得多,但它在执行代码时会付出运行时的性能代价。前两种技术基本没有性能开销。