首页
社区
课程
招聘
*已破* [PEDIY Crackme 竞赛 2007] [第二回] 第 6 队 –Nooby
发表于: 2007-6-13 12:00 8945

*已破* [PEDIY Crackme 竞赛 2007] [第二回] 第 6 队 –Nooby

2007-6-13 12:00
8945
收藏
免费 0
支持
分享
最新回复 (52)
雪    币: 452
活跃值: (72)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
26
name: Ptero
key: GcdF^cc7^tabcdef
呼呼,吃饭去~~
2007-6-13 13:11
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
27
(评审)  判定 crackme 被成功破解了

发出时间 : 2007-06-13, 12:00
完结时间 : 2007-06-13, 13:05

分数 : 65
2007-6-13 13:11
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
28
以邪秀才的一组为第 2 序号  
2007-6-13 13:14
0
雪    币: 112
活跃值: (16)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
29
我跟了下,是这样的!
2007-6-13 13:20
0
雪    币: 244
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
30
晕啊,好想睡觉,全都是牛人...
2007-6-13 13:21
0
雪    币: 233
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
注册名:20个r的倍数
注册码:20个r

是推理得到~与破解无关
2007-6-13 13:22
0
雪    币: 244
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
32
为什么用它们注册正确的在OD里调试就不行?
2007-6-13 13:24
0
雪    币: 112
活跃值: (16)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
33
估计检测调试器了!
2007-6-13 13:24
0
雪    币: 452
活跃值: (72)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
34
用了GetTickcount函数,绕过就行了
2007-6-13 13:26
0
雪    币: 297
活跃值: (21)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
35
注册名:n×20个r(n大于等于1)
注册码:11个r+9个任意字符
试验得出,与破解无关
2007-6-13 13:28
0
雪    币: 215
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
36
joel
fBCe|Bx||o

yusj
fBCe|Bx||u

晚了。。
2007-6-13 13:32
0
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
37
明天的出场队伍是

第 13 队 - bughoho
2007-6-13 13:39
0
雪    币: 732
活跃值: (192)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
用20个r注册后程序会出错

2007-6-13 13:43
0
雪    币: 926
活跃值: (382)
能力值: (RANK:500 )
在线值:
发帖
回帖
粉丝
39
我发现这前两个都有BUG啊.
2007-6-13 14:04
0
雪    币: 452
活跃值: (72)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
40
嗯 用了太多r,数据溢出了
2007-6-13 14:16
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
41
不一定要用R,用任意字符都可以

程序注册码的机制是根据用户名+注册码+ABCDEFGHabdcefghijklmnopqrsTuvwxyz`.~!@#$%^&*()_+|\=-></?':;}{[ ]字符串中选取固定某几位生成,这样当用户名+注册码的长度超过一定位数,就能实现真实注册码在用户名+注册码中选取,当用户名与注册码都是相同字符组成时就成功构建出注册码了
2007-6-13 14:29
0
雪    币: 202
活跃值: (77)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
42
偶又晚了,
还没看到crackme呢
2007-6-13 14:49
0
雪    币: 82
活跃值: (10)
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
43
// CM05Dlg.cpp : implementation file
//

#include "stdafx.h"
#include "CM05.h"
#include "CM05Dlg.h"
char txtBuf[] = "\x1f\nABCDEFGHabdcefghijklmnopqrsTuvwxyz`.~!@#$%^&*()_+|\\=-></?':;}{[ ]\n";
char txtBuf2[] = "\x1f\nabcdefghABCDEFGHIJKLMNOPQRStUVWXYZ`.~!@#$%^&*()_+|\\=-></?':;}{[ ]\n";
bool failed = false;
bool exceed = false;

当中省略

void CCM05Dlg::OnOK()
{
        // TODO: Add extra validation here

        //memcpy((void*)((long)txtBuf+10),str,90);
        if (!failed)
        {

        long time = 0;
        char* name = (char*)malloc(10);
        char* realname = (char*)malloc(20);
        GetDlgItemText(IDC_EDIT2,name,20);
        int i = sizeof(&name);
        int dummyval = 0;
        memcpy(realname,name,20);
        for(int j=0;j<i;j++)
        {
                dummyval+=i;
                dummyval+=dummyval;
        }
        char* key = (char*)malloc(20);
        GetDlgItemText(IDC_EDIT1,key,20);
        char* str = (char*)malloc(100);
        strcpy(str,realname);
        strcat(str,key);
        strcat(str,txtBuf);
        itoa(dummyval,name,4);
        strcat(str,name);
        strcpy(txtBuf,str);
        char tmpBuf[30] = "";
        int sizemagic = sizeof(tmpBuf);
        this->GetDlgItemText(IDC_EDIT1, tmpBuf, sizemagic);
        i = 0;
                        long ptr = (long)txtBuf;
                        long ptr2;
                        ptr+=20;
                        ptr*=10;
                        ptr-=100;
                        ptr/=5;
                        ptr-=20;
                        ptr/=2;
                        ptr--;
                        time = GetTickCount();
                        if(memcmp((char*)(ptr2=ptr+sizemagic),&tmpBuf[i],1)==0)
                        {
                                if(exceed)
                                        goto err;
                                if(GetTickCount()-time>1000)
                                        exceed = true;
                                __try
                                {
                                        i++;
                                        ptr*=2;
                                        ptr+=36;
                                        ptr/=2;

                                        ptr+=20;
                                        ptr*=10;
                                        ptr-=100;
                                        ptr/=5;
                                        ptr-=20;
                                        ptr/=2;
                                        time = GetTickCount();
                                        i = IDC_EDIT1 / memcmp((char*)ptr,&tmpBuf[i],1);
                                }
                                __except(1)
                                {
                                        if(exceed)
                                                goto err;
                                        if(GetTickCount()-time>1000)
                                                exceed = true;
                                        __try
                                        {
                                                i++;
                                                ptr++;
                                                ptr*=2;
                                                ptr/=2;

                                                ptr+=20;
                                                ptr*=10;
                                                ptr-=100;
                                                ptr/=5;
                                                ptr-=20;
                                                ptr/=2;
                                                time = GetTickCount();
                                                i = IDC_EDIT1 / memcmp((char*)ptr,&tmpBuf[i],1);
                                        }
                                        __except(1)
                                        {
                                                if(exceed)
                                                        goto err;
                                                if(GetTickCount()-time>1000)
                                                        exceed = true;
                                                __try
                                                {
                                                        i++;
                                                        ptr2+=20;
                                                        ptr2*=10;
                                                        ptr2-=100;
                                                        ptr2/=5;
                                                        ptr2-=20;
                                                        ptr2/=2;
                                                        time = GetTickCount();
                                                        i = IDC_EDIT1 / memcmp((char*)--ptr2,&tmpBuf[i],1);
                                                }
                                                __except(1)
                                                {
                                                        if(exceed)
                                                                goto err;
                                                        if(GetTickCount()-time>1000)
                                                                exceed = true;
                                                        __try
                                                        {
                                                                i++;
                                                                ptr2+=30;
                                                                ptr2*=2;
                                                                ptr2+=16;
                                                                ptr2/=2;
                                                                time = GetTickCount();
                                                                i = IDC_EDIT1 / memcmp((char*)--ptr2,&tmpBuf[i],1);
                                                        }
                                                        __except(1)
                                                        {
                                                                if(exceed)
                                                                        goto err;
                                                                if(GetTickCount()-time>1000)
                                                                        exceed = true;
                                                                __try
                                                                {
                                                                        i++;
                                                                        ptr+=20;
                                                                        ptr*=10;
                                                                        ptr-=100;
                                                                        ptr/=5;
                                                                        ptr-=20;
                                                                        ptr/=2;
                                                                        time = GetTickCount();
                                                                        i = IDC_EDIT1 / memcmp((char*)--ptr,&tmpBuf[i],1);
                                                                }
                                                                __except(1)
                                                                {
                                                                        if(exceed)
                                                                                goto err;
                                                                        if(GetTickCount()-time>1000)
                                                                                exceed = true;
                                                                        __try
                                                                        {
                                                                                i++;
                                                                                ptr-=7;
                                                                                ptr+=20;
                                                                                ptr*=10;
                                                                                ptr-=100;
                                                                                ptr/=5;
                                                                                ptr-=20;
                                                                                ptr/=2;
                                                                                time = GetTickCount();
                                                                                i = IDC_EDIT1 / memcmp((char*)ptr,&tmpBuf[i],1);
                                                                        }
                                                                        __except(1)
                                                                        {
                                                                                if(exceed)
                                                                                        goto err;
                                                                                if(GetTickCount()-time>1000)
                                                                                        exceed = true;
                                                                                __try
                                                                                {
                                                                                        i++;
                                                                                        ptr+=2;
                                                                                        ptr+=20;
                                                                                        ptr*=10;
                                                                                        ptr-=100;
                                                                                        ptr/=5;
                                                                                        ptr-=20;
                                                                                        ptr/=2;
                                                                                        time = GetTickCount();
                                                                                        i = IDC_EDIT1 / memcmp((char*)ptr,&tmpBuf[i],1);
                                                                                }
                                                                                __except(1)
                                                                                {
                                                                                        if(exceed)
                                                                                                goto err;
                                                                                        if(GetTickCount()-time>1000)
                                                                                                exceed = true;
                                                                                        __try
                                                                                        {
                                                                                                i++;
                                                                                                ptr+=20;
                                                                                                ptr*=10;
                                                                                                ptr-=100;
                                                                                                ptr/=5;
                                                                                                ptr-=40;
                                                                                                ptr/=2;
                                                                                                time = GetTickCount();
                                                                                                i = IDC_EDIT1 / memcmp((char*)ptr2,&tmpBuf[i],1);
                                                                                        }
                                                                                        __except(1)
                                                                                        {
                                                                                                if(exceed)
                                                                                                        goto err;
                                                                                                if(GetTickCount()-time>1000)
                                                                                                        exceed = true;
                                                                                                __try
                                                                                                {
                                                                                                        i++;
                                                                                                        ptr2+=20;
                                                                                                        ptr2*=10;
                                                                                                        ptr2-=100;
                                                                                                        ptr2/=5;
                                                                                                        ptr2-=10;
                                                                                                        ptr2/=2;
                                                                                                        i = IDC_EDIT1 / memcmp((char*)--ptr,&tmpBuf[i],1);
                                                                                                }
                                                                                                __except(1)
                                                                                                {
                                                                                                        if(exceed)
                                                                                                                goto err;
                                                                                                        char greeting[] = "\x1f\n恭喜你!";
                                                                                                        char greeting2[] = "\x1f\n成功";
                                                                                                        MessageBox(&greeting[2],&greeting2[2],0);
                                                                                                        CDialog::OnOK();
                                                                                                        return;
                                                                                                }
                                                                                        }
                                                                                }
                                                                        }
                                                                }
                                                        }
                                                }
                                                }
                                                }
                                                }

err:                                failed = true;
                                        }
                                        char greeting3[] = "\x1f\n继续努力";
                                        char greeting4[] = "\x1f\n失败";
                                        MessageBox(&greeting3[2],&greeting4[2],0);
}

Nooby
eABc+AA1+o

That's it.
2007-6-13 15:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
44
Sofa~...
2007-6-13 19:23
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
45
kankan 是很么好东西
2007-6-13 19:27
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
46
我只能纯支持.
2007-6-13 21:02
0
雪    币: 244
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
47
源码都出来了...
2007-6-13 22:45
0
雪    币: 400
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
48
换点有挑战性的好吗?难一点好吗?
2007-6-14 00:03
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
49
试试哈
看看能用上不
2007-6-14 07:41
0
雪    币: 314
活跃值: (15)
能力值: ( LV12,RANK:410 )
在线值:
发帖
回帖
粉丝
50
原来这样,异常九次就成功了,学习了
2007-6-14 15:38
0
游客
登录 | 注册 方可回帖
返回
//