C#代码最终会被编译为 IL,对 IL 进行
逆向工程比较简单,因此一种办法是向第三方购买一个混淆器(obfuscator),能通过打乱程序集
元数据中的私有符合名称,让人难以阅读。但本质上,这种保护是有限的,只是难以阅读,而不能从根本上避免。
另一种办法是,在非托管模块中实现你比较重要的算法,然后通过 CLR 的平台互操作,来使托管代码调用它,这样程序仍然能够正常工作,但对非托管的本地代码进行反编译,就很困难。
一般来说,除非你的这部分代码非常重要,或涉及核心机密,才需要考虑防止反编译的做法。一般来说,混淆器也足够了。