在阅读了C#C++之间的编译差异之后,我的问题是,我们无法使用Visual Studio(或其他程序)编译C#应用程序(或dll),因此与C++类似,它在编译和删除过程中剥离了许多信息制作了一个难以反编译的应用,例如C++文件。

#1 楼

有许多选项:



C#代码可以使用Ngen.exe或.NET Native编译为本地代码(如C ++编译)。尽管运行时可能仍需要IL代码和元数据。
可以混淆程序集中包含的所有信息,例如类型名,变量名,方法名,字符串和常量。这使得仅通过查看结构名称就很难猜测其目的。这使程序集更像剥离调试信息的本机二进制文件,除了IL代码通常比本机代码更容易反编译。 IL指令不容易被混淆。 IL代码和元数据。本机函数可以调用外部本机库来完成这项工作。显然,这甚至比反编译纯本机代码要难得多,但是在执行代码时却要付出运行时性能的代价。前两种技术基本上没有性能开销。


评论


谢谢,很好的答案。但是,如果您已给出方法(示例)如何执行所描述的每件事,则应该是很好的答案!

–T.Todua
18年5月5日在6:33