我们的C#软件工程就要完成了,已经进入了收尾的阶段。有一个事情不得不提上了日程,那就是对我们制作的软件的保护。以前接触过的保护基本上没有基于.NET平台的,但是这一回的目标却是这个未知的领域,那么到底前途如何我不敢保证,但是起码可以在摸索中学习这一点我异常喜欢。:)
dotNet程序破解的文章并不多见,不过NET平台是大势所趋,相信一段时间之后,这一类的文章会渐渐的多起来的。很多Crack .Net的文章使用了IL和Reflector两款工具,为什么我的文章仅仅使用了Xenocode Fox 2007一款软件呢?因为我的Reflector已经过期了,又无法上网更新,所以只好使用Xenocode Fox 2007了。(好XX的理由~)
实际上Xenocode Fox 2007我在写这篇文章时是第一次使用。(再次抱怨下Reflector)Xenocode Fox 2007是由Code Systems Corporation开发的.Net平台反编译工具。这里有个主要注意的一点,之所以称之为反编译工具,就是因为它可以比较完整的还原出原始的原始代码。(依旧针对VB.net和C#。)我手中的版本是E文版本,还没有汉化过,至于其他的功能还没有研究过,有机会的话再深入挖掘一下吧。(看外观比较简单,应当属于设置简单威力巨大的那种。)
这次破解的程序是我为了演示随意写的一个密码验证程序,使用了很简单的验证保护。由于使用Xenocode Fox 2007破解起来十分的简单,因此我的步骤页就简略一点了,大家可以看懂就可以了。
打开Xenocode Fox 2007,十分简洁的界面,左面是类的显示窗口,右面是反编译的源代码。
点击工具栏上的“Open”按钮,选择“crack1.exe”打开,左面的类显示出了结构。如果你了解C#编程的话,那么你很快明白只有那个以程序名命名的才是我们的住目标。(要不你到系统内存里面去找什么......)依次展开,“Crack1.exe”-》“Crack1”-》“From1”(窗体名,这个程序是单窗体),然后就可以看见以控件注明的类了。下面很简单了吧,点击一下唯一的“Button”键(实际上你可以按照命名规则来寻找的,我偷下懒啦:P)右面立刻显示出来了该Button实现的代码: private void button1_Click (object sender, EventArgs e)
{
string text2 = textBox1.Text;
string text1 = "Hello";
if (text2 == "")
{
MessageBox.Show("Did you input something?");
}
else if (text2 == text1)
{
MessageBox.Show("Hello,master!");
}
else
{
MessageBox.Show("Do you kown the password?");
}
}
实际上这段代码只有变量名不是我以前定义的以外,其他的代码都是完美的还原了,不得不惊叹一下:)。这样密码就一眼看到,无需什么破解了吧?啰嗦一点,既然可以还原代码,写注册机就是很轻松的事情了,爆破什么的无聊事情大抵就不用做了吧?