吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4381|回复: 7
收起左侧

[CrackMe] 吾爱破解2012CM大赛破文-LineZero

[复制链接]
breezer 发表于 2012-4-30 16:08
CM是什么?Crackme是什么?这是什么东西?楼主发的什么?
他们都是一些公开给别人尝试破解的小程序,制作 Crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 Cracker,想挑战一下其它 Cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破解,KeyGenMe是要求别人做出它的 keygen (序号产生器), ReverseMe 要求别人把它的算法做出逆向分析, UnpackMe 是要求别人把它成功脱壳,本版块禁止回复非技术无关水贴。

本帖最后由 Peace 于 2012-4-30 16:13 编辑

【文章标题】:吾爱破解2012CM大赛破文 - LineZero .NET Crackme 之人肉注册机
【文章作者】: breezer
【软件名称】: linezero.exe
【难       度】: 易

这个 CrackMe 是 .NET 写的,很容易看到源代码,那么我们就来看一下算法吧:
程序载入会先判断是否存在一个 52.key 文件,源代码如下:
if (File.Exists("52.key"))
    {
        FileStream stream = new FileStream("52.key", FileMode.Open, FileAccess.Read);
        StreamReader reader = new StreamReader(stream);
        string s = reader.ReadToEnd();
        byte[] bytes = Encoding.Default.GetBytes(s);                                           //52.key 取字节
        byte[] buffer2 = Encoding.Default.GetBytes("520.1234");                        //密码表 520.1314 取字节
        reader.Close();
        stream.Close();
        if ((bytes[4] == buffer2[3]) && (bytes[2] == buffer2[6]))                         //这里比较Key的内容
        {
            this.btnOk.Enabled = true;                                                                    //Keyfile 正确才激活 OK 按钮
        }
    }
可以看出,52.key 的内容需要与密码表 520.1234 对比,需要让密钥文件的第5位==密码表的第4位,第3位==密码表的第7位,这样我们手动来构造 52.key 文件如下:
1234.5

有了这个文件,OK按钮才激活。
下面我们来看OK按钮的代码,也就是计算注册码的地方:
string str = this.txtUserName.Text.Trim();
    string str2 = this.txtPass.Text.Trim();
    if (((str != "") || (str.Length >= 8)) || (str2 != ""))                                   //注册码和用户名不能为空,用户名>=8位
    {
        string s = str.Substring(1, 4);                                                                  //取用户名 2-5 位
        string str4 = str.Substring(6, 1);                                                              //取用户名第7位
        byte[] bytes = Encoding.Default.GetBytes(str4);                                     //第7位转换为字节
        byte[] buffer2 = Encoding.Default.GetBytes(s);                                       // 用户名 2-5 位转换为字节
        string str5 = "";
        for (int i = 0; i < buffer2.Length; i++)
        {
            str5 = str5 + buffer2[i];
        }
        if (string.Concat(new object[] { str5, s, str4, bytes[0] }) == str2)            //可以在这里爆破,brfalse 改 brtrue
        {
            MessageBox.Show("成功了么?其实很简单。。。继续努力,加油!");
        }
    }
这里我们看到用户名必须>=8位,我们手工来构造个用户名:12345678
s = 2345 //用户名 2-5 位
str4 = 7  //用户名第7位
bytes[0] = 55 //第7位转换为字节, 7的十六进制是37,换成十进制就是 55
str5 = 50515253    //str5就是把buffer2数组中的字符串连起来,2345的十六进制是32333435,换成十进制是50515253

注册码 str2 = str5 + s + str4 + bytes[0] = 505152532345755

来看个图片:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x

免费评分

参与人数 2热心值 +2 收起 理由
Peace + 1 nice
Rookietp + 1 欢迎分析讨论交流,[吾爱破解论坛]有你更精.

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

小咪咪 发表于 2012-4-30 16:10
SF拿了 膜拜大大  net对于我太高深
小明无敌 发表于 2012-4-30 16:13
爱你 发表于 2012-4-30 16:22
继续膜拜
怎么破解的。看不懂         呵呵!
LineZero 发表于 2012-5-1 20:33
膜拜大大……{:1_931:}
希望能多多交流。
uiuizz 发表于 2013-2-23 09:46
膜拜大大…
小雨细无声 发表于 2013-3-5 19:08
要努力学习,谢谢大牛提供详细分析。
cl4993106 发表于 2013-3-5 19:09
这个要大牛来了  
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 23:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表