好友
阅读权限25
听众
最后登录1970-1-1
|
马斯维尔
发表于 2013-12-13 20:28
CM是什么?Crackme是什么?这是什么东西?楼主发的什么?
他们都是一些公开给别人尝试破解的小程序,制作 Crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 Cracker,想挑战一下其它 Cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破解,KeyGenMe是要求别人做出它的 keygen (序号产生器), ReverseMe 要求别人把它的算法做出逆向分析, UnpackMe 是要求别人把它成功脱壳,本版块禁止回复非技术无关水贴。
本帖最后由 Chief 于 2013-12-14 17:32 编辑
原cm地址:http://www.52pojie.cn/thread-228421-1-1.html
查壳可以知道为.net程序。
Microsoft Visual C# / Basic .NET
使用Reflector打开,源码一览无遗。
BUTTON1就是我们注册的按钮了。但是我不会改代码。
我们向下找到Form1_Load(Object, EventArgs) : Void事件。
private void Form1_Load(object sender, EventArgs e)
{
if ((this.FileExist(@"c:\windows\system32\52pojie.dll") && this.FileExist(@"c:\windows\system32\key.key")) && (this.FileExist(@"c:\windows\system32\key1.key") && this.FileIsEqual(@"c:\windows\system32\key.key", @"c:\windows\system32\key1.key")))
{
this.po52jie.Text = "Success";
this.TextBox1.Enabled = false;
this.Button1.Enabled = false;
this.Button1.Text = "Success";
}
if (!this.FileExist(@"c:\windows\system32\52pojie.dll"))
{
string path = @"c:\windows\system32\52pojie.dll";
StreamWriter writer = new StreamWriter(path, false);
string str2 = this.GetDiskModel() + this.GetCpuID();
writer.WriteLine(str2);
writer.Flush();
writer.Close();
writer = null;
}
}
这里的代码很好理解。。如果在c:\windows\system32\52pojie.dll目录中有 52pojie.dll 、key.key 、key1.key 这三个文件,并且文件key.key要和key1.key 相等。那么就提示成功哦。
于是 ,我们可以把 52pojie.dll 、key.key 、key1.key 内容全部清空,设置属性为只读。
再次打开cm ,我们就能看到成功了的提示了。
爆破手法,我待更新。。
好的,继续更新 一种爆破的方法。。。使用Reflector加载插件Reflexil插件。。。就能编辑IL代码了。 我们能看到如下的IL代码。
Offset OpCode Operand
0 ldarg.0
1 ldstr c:\windows\system32\52pojie.dll
6 callvirt System.Boolean WindowsApplication1.Form1::FileExist(System.String)
11 brfalse.s -> (33) ldarg.0
13 ldarg.0
14 ldstr c:\windows\system32\key.key
19 callvirt System.Boolean WindowsApplication1.Form1::FileExist(System.String)
24 brfalse.s -> (33) ldarg.0
26 ldarg.0
27 ldstr c:\windows\system32\key1.key
32 callvirt System.Boolean WindowsApplication1.Form1::FileExist(System.String)
37 brfalse.s -> (33) ldarg.0
39 ldarg.0
40 ldstr c:\windows\system32\key.key
45 ldstr c:\windows\system32\key1.key
50 callvirt System.Boolean WindowsApplication1.Form1::FileIsEqual(System.String,System.String)
55 brfalse.s -> (33) ldarg.0
57 ldarg.0
58 callvirt System.Windows.Forms.Label WindowsApplication1.Form1::get_po52jie()
63 ldstr Success
68 callvirt System.Void System.Windows.Forms.Label::set_Text(System.String)
73 ldarg.0
74 callvirt System.Windows.Forms.TextBox WindowsApplication1.Form1::get_TextBox1()
79 ldc.i4.0
80 callvirt System.Void System.Windows.Forms.Control::set_Enabled(System.Boolean)
85 ldarg.0
86 callvirt System.Windows.Forms.Button WindowsApplication1.Form1::get_Button1()
91 ldc.i4.0
92 callvirt System.Void System.Windows.Forms.Control::set_Enabled(System.Boolean)
97 ldarg.0
98 callvirt System.Windows.Forms.Button WindowsApplication1.Form1::get_Button1()
103 ldstr Success
108 callvirt System.Void System.Windows.Forms.ButtonBase::set_Text(System.String)
113 ldarg.0
114 ldstr c:\windows\system32\52pojie.dll
119 callvirt System.Boolean WindowsApplication1.Form1::FileExist(System.String)
124 brtrue.s -> (58) ret
126 ldstr c:\windows\system32\52pojie.dll
131 stloc.0
132 ldloc.0
133 ldc.i4.0
134 newobj System.Void System.IO.StreamWriter::.ctor(System.String,System.Boolean)
139 stloc.1
140 ldarg.0
141 callvirt System.String WindowsApplication1.Form1::GetDiskModel()
146 ldarg.0
147 callvirt System.String WindowsApplication1.Form1::GetCpuID()
152 call System.String System.String::Concat(System.String,System.String)
157 stloc.2
158 ldloc.1
159 ldloc.2
160 callvirt System.Void System.IO.TextWriter::WriteLine(System.String)
165 ldloc.1
166 callvirt System.Void System.IO.StreamWriter::Flush()
171 ldloc.1
172 callvirt System.Void System.IO.StreamWriter::Close()
177 ldnull
178 stloc.1
179 ret
把我上面用红色标记的代码 全部删除掉,只留下蓝色的代码即可。保存一份即可完成爆破。
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|