- 帖子
- 272
- 积分
- 608
- 威望
- 703
- 金钱
- 1365
- 在线时间
- 55 小时
|
我们的C#软件工程就要完成了,已经进入了收尾的阶段。有一个事情不得不提上了日程,那就是对我们制作的软件的保护。以前接触过的保护基本上没有基于.NET平台的,但是这一回的目标却是这个未知的领域,那么到底前途如何我不敢保证,但是起码可以在摸索中学习这一点我异常喜欢。:)
dotNet程序破解的文章并不多见,不过NET平台是大势所趋,相信一段时间之后,这一类的文章会渐渐的多起来的。很多Crack .Net的文章使用了IL和Reflector两款工具,为什么我的文章仅仅使用了Xenocode Fox 2007一款软件呢?因为我的Reflector已经过期了,又无法上网更新,所以只好使用Xenocode Fox 2007了。(好XX的理由~)
1.了解.NET平台
这是为了照顾不了解.NET平台的人的介绍章节,不过无论怎样仍旧推荐你看一下。MS发表的.net基于Net Framework,它与传统的Windows不同,它保存成为微软命名为中间语言的一种语言(MSIL,我们可以理解为和VB5/6相似的中间语言,在虚拟机中执行),而不是本地汇编代码。当程序执行时,由Framework负责将MSIL转化为本地的汇编代码,这个过程称之为JIT。基于这个原因,实际上.NET平台的程序在原始状态下是可以基本获取全部的源码的。(这里一般指C#和VB.net,VC++有部分解析为了本地汇编代码的。)
2.静态反编译工具介绍
实际上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?");
}
}
实际上这段代码只有变量名不是我以前定义的以外,其他的代码都是完美的还原了,不得不惊叹一下:)。这样密码就一眼看到,无需什么破解了吧?啰嗦一点,既然可以还原代码,写注册机就是很轻松的事情了,爆破什么的无聊事情大抵就不用做了吧?
--------------------------------------------------------------------------------
【经验总结】
.Net的分析并不是这么的简单。首先,我们只是调试了一个简单的程序,其次,这个程序并没有做任何的保护,所以,完成分析是很轻易的事情。实际上.NET平台下的文件分析并不是这样的简单。下个文章里我们会深入的继续探讨 |
|