C#代码如何有效防止反编译破解
1.在编码过程中尽量使用private/internal关键词修饰class、方法和字段名称,只有内部和私有的才会被重命名
2.编码过程尽可能少地使用public修饰class、方法和字段名称,public修饰后混淆编译将不会被重命名
3.避免使用反射和序列化,反序列化操作,字段被重命名后可能会造成程序执行异常,反射、序列化和反序列化会执行失败
4.添加生成事件,调用Dotfuscator 进行代码混淆
if $(ConfigurationName)==Debug "C:/Program Files (x86)/Microsoft Visual Studio 14.0/PreEmptive Solutions/Dotfuscator and Analytics Community Edition/dotfuscator.exe" "$(ProjectDir)/bin/Dotfuscator.xml"
在每次生成成功会自动调用Dotfuscator,点击 生成项目 即可
5.使用打包工具innosetup,自动打包混淆后exe或动态库即可外发给客户或现场使用
混淆后的代码效果如下,全是无意义的字母,基本无法读懂,如果Dotfuscator是专业版的还可以混淆为不可见字符,根本无法编辑和查看