.net是中间语言,刚开始出来的时候,比较流行混淆方式让破解者增加破解难度,但是由于.net写的程序代码是直接交给托管程序去解析的,所以你混淆也没多大意义了,因为你再怎么混淆最终
首先模块生成一定要签名保护。我是在程序的启动器部分,登陆验证模块,加了很多混乱的多层跳转迷惑代码。然后用RedGate的混淆器(需要用到混淆对象的签名),变量名用非打印字符,开启字符串加密,流程混淆,IL代码保护。 混淆后再用ILSpy和JB的反编译器测试,登录部分无法反编译出来,其他部分变量名不可读,字符串都加密了,达到了预期的目标。 最近两年没太关注代码保护这方面,这个需要经验,总之就是混淆工具配合反编译工具,慢慢调试,如果能反编译出来就改关键代码,多加一些深层迷惑跳转。