前段时间听个.NET讲座,其中说到为.NET程序签名后,能够保护程序不会受到篡改。
接着回来后做了个小试验:
1。用sn.exe生成密钥文件,并在程序中指定密钥,编译程序。
2。用ILDASM反编译程序
3。将反编译后的代码中的公钥那段代码删除
4。修改程序
5。用ILASM编译,运行成功。
这样看来,这为程序签名并不是一个保护程序的绝好措施。最好的方法还是使用混淆器将编译后的代码混淆,然后再为其签名。
这期的CSDN开发高手中,《如何防止.NET组件被反编译》一文便提到了相关内容。