通常我们通过代码混淆、加密的形式达到软件保护的目的。在Web开发里我们接触过的可能就是JS代码加密了,可以通过对JS代码进行混淆、加密从而实现对核心JS代码的保护。如果没有接触过的可以在这里简单了解一下,这次我们就不去细说了。
在以前Win32的软件中,加壳脱壳的技术已经发展的非常成熟,美国服务器,国内有大名鼎鼎的看雪、吾爱破解等论坛,三四年前还在上学时,论坛里的大牛一直都是自己的偶像。
而.NET程序因为编译结果不是机器代码语言,而是IL语言,所以加壳脱壳相关的软件还不是很多,我搜索到了一些,如VS自带的DotFuscator、.NET Reactor、xeoncode等,这次我们就简单介绍下手边有的.NET Reactor。
1.代码混淆
代码混淆主要通过一些名称替换、移位、流程混淆的方式来实现。
先来看一个测试的DEMO程序,网站空间,很简单的一个Winform程序,实例化窗体时实例化一个User类,点击按钮显示用户名,这样也可以测试加密、加壳后程序是否能够继续运行。
1usingSystem;2usingSystem.Windows.Forms;34namespaceCodeObfuscator5{6publicpartialclassForm1:Form7{8privatereadonlyUser_currentUser;9publicForm1()10{11InitializeComponent();12_currentUser=newUser13{14UserID=1,16};17}1819privatevoidButtonAlertClick(objectsender,EventArgse)20{21MessageBox.Show(_currentUser.UserName);22}23}2425publicclassUser26{27publicintUserID{get;set;}28publicstringUserName{get;set;}29}30},香港服务器要铭记在心;每天都是一年中最美好的日子