首页
社区
课程
招聘
[原创]发个CrackMe,给赛手练下手
发表于: 2009-8-31 18:10 8714

[原创]发个CrackMe,给赛手练下手

2009-8-31 18:10
8714
本来想顺便参赛的发现在报名已经过期了...

第一个CrackMe
希望不会太惨....

补充说明:
CM里加了点ANTI
成功后会MSGBOX....
貌似还可以算加了点防暴破的东西...

[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (21)
雪    币: 137
活跃值: (460)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
成功图片
2009-8-31 18:19
0
雪    币: 156
活跃值: (27)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
那.个是一个对话框吧?129..额..我只会爆破..
2009-8-31 18:56
0
雪    币: 156
活跃值: (27)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
直接用CreateDialogIndirectParamA打开那个DIALOG不知道可以不.
2009-8-31 20:11
0
雪    币: 137
活跃值: (460)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
貌似有错别字.明明想打恭的...
2009-8-31 21:22
0
雪    币: 226
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
00401880    6A FF           push -1
00401882    68 B8224000     push CrackMe.004022B8                    ; SE 处理程序安装
00401887    64:A1 00000000  mov eax,dword ptr fs:[0]
0040188D    50              push eax
0040188E    64:8925 0000000>mov dword ptr fs:[0],esp
00401895    83EC 34         sub esp,34
00401898    53              push ebx
00401899    55              push ebp
0040189A    56              push esi
0040189B    8BF1            mov esi,ecx
0040189D    57              push edi
0040189E    8D4C24 10       lea ecx,dword ptr ss:[esp+10]
004018A2    897424 1C       mov dword ptr ss:[esp+1C],esi
004018A6    E8 C5060000     call <jmp.&MFC42.#540_CString::CString>
004018AB    8B46 64         mov eax,dword ptr ds:[esi+64]
004018AE    83C6 64         add esi,64
004018B1    33DB            xor ebx,ebx
004018B3    8B48 F8         mov ecx,dword ptr ds:[eax-8]
004018B6    B8 20000000     mov eax,20
004018BB    99              cdq
004018BC    F7F9            idiv ecx
004018BE    895C24 4C       mov dword ptr ss:[esp+4C],ebx
004018C2    40              inc eax
004018C3    74 0F           je short CrackMe.004018D4
004018C5    8BF8            mov edi,eax
004018C7    56              /push esi
004018C8    8D4C24 14       |lea ecx,dword ptr ss:[esp+14]
004018CC    E8 E1060000     |call <jmp.&MFC42.#939_CString::operator>
004018D1    4F              |dec edi
004018D2  ^ 75 F3           \jnz short CrackMe.004018C7
004018D4    8D4C24 10       lea ecx,dword ptr ss:[esp+10]
004018D8    E8 CF060000     call <jmp.&MFC42.#4204_CString::MakeUppe>
004018DD    B9 08000000     mov ecx,8
004018E2    33C0            xor eax,eax
004018E4    8D7C24 21       lea edi,dword ptr ss:[esp+21]
004018E8    C64424 20 00    mov byte ptr ss:[esp+20],0
004018ED    F3:AB           rep stos dword ptr es:[edi]
004018EF    8B4424 10       mov eax,dword ptr ss:[esp+10]
004018F3    8D4C24 20       lea ecx,dword ptr ss:[esp+20]
004018F7    33FF            xor edi,edi
004018F9    33F6            xor esi,esi
004018FB    2BC1            sub eax,ecx
004018FD    895C24 14       mov dword ptr ss:[esp+14],ebx
00401901    894424 18       mov dword ptr ss:[esp+18],eax
00401905    EB 04           jmp short CrackMe.0040190B
00401907    8B4424 18       /mov eax,dword ptr ss:[esp+18]
0040190B    8D4C3C 20        lea ecx,dword ptr ss:[esp+edi+20]
0040190F    8A1C08          |mov bl,byte ptr ds:[eax+ecx]
00401912    80FB 3A         |cmp bl,3A
00401915    7E 11           |jle short CrackMe.00401928
00401917    8BC6            |mov eax,esi
00401919    BD 1F000000     |mov ebp,1F
0040191E    99              |cdq
0040191F    F7FD            |idiv ebp
00401921    02D3            |add dl,bl
00401923    80EA 3F         |sub dl,3F
00401926    EB 11           |jmp short CrackMe.00401939
00401928    8B4424 14       |mov eax,dword ptr ss:[esp+14]
0040192C    BD 11000000     |mov ebp,11
00401931    99              |cdq
00401932    F7FD            |idiv ebp
00401934    02D3            |add dl,bl
00401936    80EA 27         |sub dl,27
00401939    0FBEC2          |movsx eax,dl
0040193C    8811            |mov byte ptr ds:[ecx],dl
0040193E    BB 0F000000     |mov ebx,0F
00401943    99              |cdq
00401944    F7FB            |idiv ebx
00401946    83C6 13         |add esi,13
00401949    47              |inc edi
0040194A    8811            |mov byte ptr ds:[ecx],dl
0040194C    8B4C24 14       |mov ecx,dword ptr ss:[esp+14]
00401950    83C1 08         |add ecx,8
00401953    81FE 60020000   |cmp esi,260
00401959    894C24 14       |mov dword ptr ss:[esp+14],ecx
0040195D  ^ 75 A8           \jnz short CrackMe.00401907
0040195F    8B6C24 1C       mov ebp,dword ptr ss:[esp+1C]
00401963    8D7C24 20       lea edi,dword ptr ss:[esp+20]
00401967    33F6            xor esi,esi
00401969    83EF 07         sub edi,7
0040196C    E8 6FFAFFFF     /call CrackMe.004013E0
00401971    0FBE05 99614000 |movsx eax,byte ptr ds:[406199]
00401978    99              |cdq
00401979    BB 0E000000     |mov ebx,0E
0040197E    8D4E 07         |lea ecx,dword ptr ds:[esi+7]
00401981    F7FB            |idiv ebx
00401983    33C0            |xor eax,eax
00401985    8A040F          |mov al,byte ptr ds:[edi+ecx]
00401988    80C2 0C         |add dl,0C
0040198B    81E2 FF000000   |and edx,0FF
00401991    33C2            |xor eax,edx
00401993    8D1440          |lea edx,dword ptr ds:[eax+eax*2]
00401996    8D0490          |lea eax,dword ptr ds:[eax+edx*4]
00401999    99              |cdq
0040199A    F7FB            |idiv ebx
0040199C    8B45 68         |mov eax,dword ptr ss:[ebp+68]
0040199F    8B1D 9C614000   |mov ebx,dword ptr ds:[40619C]
004019A5    8A0430          |mov al,byte ptr ds:[eax+esi]
004019A8    FEC2            |inc dl
004019AA    83FB 20         |cmp ebx,20
004019AD    74 27           |je short CrackMe.004019D6
004019AF    3C 3A           |cmp al,3A
004019B1    7E 04           |jle short CrackMe.004019B7
004019B3    04 C9           |add al,0C9
004019B5    EB 02           |jmp short CrackMe.004019B9
004019B7    04 D0           |add al,0D0
004019B9    0FBED8          |movsx ebx,al
004019BC    0FBED2          |movsx edx,dl
004019BF    8BC1            |mov eax,ecx
004019C1    33DA            |xor ebx,edx
004019C3    99              |cdq
004019C4    B9 0E000000     |mov ecx,0E
004019C9    F7F9            |idiv ecx
004019CB    42              |inc edx
004019CC    3BDA            |cmp ebx,edx
004019CE    75 06           |jnz short CrackMe.004019D6
004019D0    46              |inc esi
004019D1    83FE 20         |cmp esi,20
004019D4  ^ 75 96           \jnz short CrackMe.0040196C
004019D6    E8 45000000     call CrackMe.00401A20
004019DB    85C0            test eax,eax
004019DD    75 0E           jnz short CrackMe.004019ED
004019DF    50              push eax
004019E0    50              push eax
004019E1    68 64404000     push CrackMe.00404064
004019E6    8BCD            mov ecx,ebp
004019E8    E8 B3050000     call <jmp.&MFC42.#4224_CWnd::MessageBoxA>
004019ED    8D4C24 10       lea ecx,dword ptr ss:[esp+10]
004019F1    C74424 4C FFFFF>mov dword ptr ss:[esp+4C],-1
004019F9    E8 5A050000     call <jmp.&MFC42.#800_CString::~CString>
004019FE    8B4C24 44       mov ecx,dword ptr ss:[esp+44]
00401A02    5F              pop edi
00401A03    5E              pop esi
00401A04    5D              pop ebp
00401A05    5B              pop ebx
00401A06    64:890D 0000000>mov dword ptr fs:[0],ecx
00401A0D    83C4 40         add esp,40
00401A10    C3              retn

算法部分 未分析。。。
强大的IDA F5。。。
int __fastcall sub_401880(int a1)
{
        int v1; // edx@1
        signed int v2; // ecx@1
        int v3; // esi@1
        int v4; // edi@2
        int v5; // eax@4
        int v6; // edi@4
        signed int v7; // esi@4
        char *v8; // ecx@6
        char v9; // bl@6
        char v10; // dl@7
        int v11; // ebp@10
        signed int v12; // esi@10
        char v13; // al@11
        char v14; // al@13
        int v15; // eax@17
        int v17; // esi@1
        int v18; // eax@1
        int v19; // [sp+1Ch] [bp-34h]@1
        int v20; // [sp+10h] [bp-40h]@1
        signed int v21; // [sp+4Ch] [bp-4h]@1
        char v22; // [sp+20h] [bp-30h]@4
        char v23; // [sp+21h] [bp-2Fh]@4
        signed int v24; // [sp+14h] [bp-3Ch]@4
        int v25; // [sp+18h] [bp-38h]@4
       
        v17 = a1;
        v19 = a1;
        CString__CString(&v20);
        v18 = *(_DWORD *)(v17 + 100);
        v3 = v17 + 100;
        v2 = *(_DWORD *)(v18 - 8);
        v1 = 32 % v2;
        v21 = 0;
        if ( 32 / v2 != -1 )
        {
                v4 = 32 / v2 + 1;
                do
                {
                        CString__operator__(&v20, v3);
                        --v4;
                }
                while ( v4 );
        }
        CString__MakeUpper(&v20, v1);
        v22 = 0;
        memset(&v23, 0, 0x20u);
        v6 = 0;
        v7 = 0;
        v5 = v20 - (_DWORD)&v22;
        v24 = 0;
        v25 = v20 - (_DWORD)&v22;
        while ( 1 )
        {
                v8 = &v22 + v6;
                v9 = *(&v22 + v6 + v5);
                if ( v9 <= 58 )
                        v10 = v9 + v24 % 17 - 39;
                else
                        v10 = v9 + v7 % 31 - 63;
                *v8 = v10;
                v7 += 19;
                ++v6;
                *v8 = v10 % 15;
                v24 += 8;
                if ( v7 == 608 )
                        break;
                v5 = v25;
        }
        v11 = v19;
        v12 = 0;
        do
        {
                sub_4013E0();
                v13 = *(_BYTE *)(*(_DWORD *)(v11 + 104) + v12);
                if ( dword_40619C == 32 )
                        break;
                if ( v13 <= 58 )
                        v14 = v13 - 48;
                else
                        v14 = v13 - 55;
                if ( ((char)(13 * ((unsigned __int8)(byte_406199 % 14 + 12) ^ *((_BYTE *)&v25 + v12 + 8)) % 14 + 1) ^ v14) != (v12 + 7) % 14 + 1 )
                        break;
                ++v12;
        }
        while ( v12 != 32 );
        v15 = sub_401A20();
        if ( !v15 )
                CWnd__MessageBoxA(v11, "注册失败!", v15, v15);
        v21 = -1;
        return CString___CString(&v20);
}

LZ去掉了成功的消息框把?还是我跟错了?
2009-8-31 21:36
0
雪    币: 137
活跃值: (460)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
嘿嘿,貌似还没被秒暴....
2009-9-1 11:39
0
雪    币: 85
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
的确牛~算法太难分析了~
2009-9-1 12:38
0
雪    币: 137
活跃值: (460)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
成功的消息框我处理了....
只有要DBG没被检测出来...SN正确就绝对能弹成功的消息框
2009-9-1 12:49
0
雪    币: 253
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
可否先给一个正确的解
anti很巧妙 学习
virtualprotect  时间差 。。。
2009-9-1 13:50
0
雪    币: 137
活跃值: (460)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
这么快就找出来了
还好没参赛...要不就丢人了
2009-9-1 13:52
0
雪    币: 137
活跃值: (460)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
哪个算法很简单的...给个KEY一下子就过了
2009-9-1 13:56
0
雪    币: 253
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
给我一个正确的码嘛 我学习下20后的serial的是怎么验证的
2009-9-1 13:59
0
雪    币: 137
活跃值: (460)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
name:SuperMan
sn:30FC7BBD6A5921D248E17FC8C81CUK00
算法都差不多...
2009-9-1 14:03
0
雪    币: 253
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15


crackme是刚解压出来的 没任何改动
上传的附件:
2009-9-1 14:11
0
雪    币: 253
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
你换了一个 这个行 我看下啊
2009-9-1 14:14
0
雪    币: 146
活跃值: (182)
能力值: ( LV13,RANK:220 )
在线值:
发帖
回帖
粉丝
17
你输错了吧,我把上面的输进去出现:恭喜!注册成功!
2009-9-1 17:17
0
雪    币: 370
活跃值: (52)
能力值: ( LV13,RANK:350 )
在线值:
发帖
回帖
粉丝
18
name:moonife
serial:6AE7D3FCB0945BA310669FFF9F8CUK00

不错的crackme 学习了
2009-9-1 17:34
0
雪    币: 137
活跃值: (460)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
说了算法很容易.一个KEY就见光死了
2009-9-1 17:39
0
雪    币: 253
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20


sndosej
3B4E0C5684844C024311F8ED8459UK00
半天才算出来被你骗了好几次
上传的附件:
2009-9-1 19:20
0
雪    币: 137
活跃值: (460)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
哈哈,你没发现我第一次发的KEY就是你的名字
2009-9-1 20:41
0
雪    币: 253
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
果然是

在被你骗一次
2009-9-1 21:25
0
游客
登录 | 注册 方可回帖
返回
//