首页
社区
课程
招聘
[原创]一个简单的CrackMe,大家看看
发表于: 2008-7-8 16:06 5237

[原创]一个简单的CrackMe,大家看看

2008-7-8 16:06
5237
这个CrackMe很简单,最好能写个KeyGen,呵呵

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 82
活跃值: (10)
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
2
说风气不好,例子就来了
2008-7-8 18:42
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
有兴趣的挑战一下!
2008-7-8 22:17
0
雪    币: 82
活跃值: (10)
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
4
ascii可见字符不专门处理了,自己改下初始就好。算出来的东西倒过来输

#include "stdafx.h"
#include <malloc.h>
#include <conio.h>

int _tmain(int argc, _TCHAR* argv[])
{
        char* usr = (char*)malloc(8);
        unsigned long *key = (unsigned long*)malloc(8);
        unsigned char* tmp = (unsigned char*)malloc(8);
       
        int j = 0;
        memset(usr,0,8);
        memset(tmp,0,8);
        memset(key,0,8);
        usr[0]='h';
        usr[1]='N';
        usr[2]='o';
        usr[3]='o';
        usr[4]='b';
        usr[5]='y';

        key[0]=0x21212121;
        key[1]=0x00004121;
        unsigned long result = 0;
        for(int i = 0;i<7;i+=2)
        {
                tmp[7-i] = usr[i]^usr[i+1];
                //printf("%lx\n",tmp[7-i]);
        }
        while(1)
        {
                for(int i = 1;i<6;i+=2)
                {
                        tmp[i+1] = ((unsigned char*)key)[i]^((unsigned char*)key)[i-1];
                        printf("%lx\n",tmp[i+1]);
                }

                for(int i = 2;i<8;i+=2)
                {
                        result += (tmp[i]^tmp[i+1])<<(4*(6-i));
                }
                //printf("%lx\n",result);

                if(j<1 && (tmp[2]^tmp[3]) == 0x1c)
                {
                        j++;
                }
                if(j<2 && (tmp[4]^tmp[5]) == 0x15)
                {
                        j++;
                }
                if(j<3 && (tmp[6]^tmp[7]) == 0x0e)
                {
                printf("%s\n",key);
                        _getch();
                        break;
                }
                result = 0;
                ((unsigned char*)key)[j*2]++;
        }
       
        delete[] usr;
        return 0;
}
2008-7-8 22:19
0
雪    币: 82
活跃值: (10)
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
5
这样的风气不好,算法就算法,anti就anti,不然还不如传附件的时候给压缩包加个密码,有意思吗?
上传的附件:
  • 1.jpg (14.79kb,166次下载)
2008-7-8 22:23
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
呵呵,自己写的第一个CrackMe,简单了点,至于算法和anti的关系,兴趣使然!
2008-7-8 22:32
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
点“取消”没反应,使用OD还运行不了~~难道是RP??
2008-7-8 22:33
0
雪    币: 295
活跃值: (11)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
8
顶Nooby

别人发的算法crackme  好多人总喜欢暴了后 还发个抓图  有意思吗 ?
2008-7-8 22:36
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
[QUOTE=;]...[/QUOTE]
看Nooby的,答案已经出来了。想想就明白了
2008-7-8 22:40
0
雪    币: 333
活跃值: (116)
能力值: ( LV9,RANK:570 )
在线值:
发帖
回帖
粉丝
10
好有趣呀:


传说中的算法:
00401059  /$  55             push    ebp
0040105A  |.  8BEC           mov     ebp, esp
0040105C  |.  83C4 F8        add     esp, -8
0040105F  |.  B8 1B114000    mov     eax, Butland'.0040111B
00401064  |.  50             push    eax
00401065  |.  E8 BA010000    call    <jmp.&kernel32.SetUnhandledExce>
0040106A  |.  BA 8E104000    mov     edx, Butland'.0040108E          ;  edx := 40108E;
0040106F  |.  B8 1B114000    mov     eax, Butland'.0040111B          ;  eax := 40111B
00401074  |.  2BC2           sub     eax, edx                        ;  eax := eax - edx := $8D;
00401076  |.  8BC8           mov     ecx, eax                        ;  ecx := eax = $8D;
00401078  |.  33F6           xor     esi, esi                        ;  esi清零
0040107A  |.  8B7D 08        mov     edi, [arg.1]                    ;  注册名地址送edi
0040107D  |>  8A86 8E104000  /mov     al, byte ptr ds:[esi+40108E]
00401083  |.  3207           |xor     al, byte ptr ds:[edi]
00401085  |.  8886 8E104000  |mov     byte ptr ds:[esi+40108E], al
0040108B  |.  46             |inc     esi                            ;  依次累加
0040108C  |.^ E2 EF          \loopd   short Butland'.0040107D        ;  循环

0040108E  |.  FF75 08        push    [arg.1]                         ;  压入注册名
00401091  |.  E8 94010000    call    <jmp.&kernel32.lstrlenA>        ;  得到注册名长度
00401096  |.  8BC8           mov     ecx, eax
00401098  |.  83F9 06        cmp     ecx, 6                          ;  与6比较
0040109B  |.  75 7E          jnz     short Butland'.0040111B         ;  不等,跳走,失败
0040109D  |.  FF75 0C        push    [arg.2]                         ;  压入注册码
004010A0  |.  E8 85010000    call    <jmp.&kernel32.lstrlenA>        ;  得到注册码的长度
004010A5  |.  8BC8           mov     ecx, eax
004010A7  |.  83F9 06        cmp     ecx, 6                          ;  与6比较
004010AA  |.  75 6F          jnz     short Butland'.0040111B         ;  不等,跳走,失败

004010AC  |.  8B75 08        mov     esi, [arg.1]                    ;  注册名
004010AF  |.  B9 04000000    mov     ecx, 4                          ;  ecx = 4
004010B4  |.  33FF           xor     edi, edi
004010B6  |>  8A06           /mov     al, byte ptr ds:[esi]          ;  注册名奇数位的字符 -> al
004010B8  |.  8A5E 01        |mov     bl, byte ptr ds:[esi+1]        ;  注册名偶数位的字符 -> bl
004010BB  |.  32C3           |xor     al, bl                         ;  al = al 异或 bl
004010BD  |.  3E:88443D F8   |mov     byte ptr ds:[ebp+edi-8], al    ;  字节 结果依次放入
004010C2  |.  83C6 02        |add     esi, 2
004010C5  |.  47             |inc     edi
004010C6  |.^ E2 EE          \loopd   short Butland'.004010B6

004010C8  |.  8B75 0C        mov     esi, [arg.2]                    ;  注册码
004010CB  |.  B9 04000000    mov     ecx, 4                          ;  ecx = 4
004010D0  |.  33FF           xor     edi, edi
004010D2  |>  8A06           /mov     al, byte ptr ds:[esi]          ;  注册码奇数位的字符 -> al
004010D4  |.  8A5E 01        |mov     bl, byte ptr ds:[esi+1]        ;  注册码偶数位的字符 -> bl
004010D7  |.  32C3           |xor     al, bl                         ;  al = al 异或 bl
004010D9  |.  3E:88443D FC   |mov     byte ptr ds:[ebp+edi-4], al    ;  字节 结果依次放入
004010DE  |.  83C6 02        |add     esi, 2
004010E1  |.  47             |inc     edi
004010E2  |.^ E2 EE          \loopd   short Butland'.004010D2

004010E4  |.  B9 03000000    mov     ecx, 3                          ;  ecx = 3
004010E9  |.  33FF           xor     edi, edi
004010EB  |>  36:8A442F F8   /mov     al, byte ptr ss:[edi+ebp-8]    ;  依次取 注册名 的运算结果
004010F0  |.  36:8A5C2F FC   |mov     bl, byte ptr ss:[edi+ebp-4]    ;  依次取 注册码 的运算结果
004010F5  |.  32C3           |xor     al, bl                         ;  al = al 异或 bl
004010F7  |.  88442F F8      |mov     byte ptr ds:[edi+ebp-8], al    ;  结果依次重写回 注册名 的结果处
004010FB  |.  47             |inc     edi
004010FC  |.^ E2 ED          \loopd   short Butland'.004010EB
004010FE  |.  8B45 F8        mov     eax, [local.2]                  ;  eax = 上面的结果
00401101  |.  2D 0E151C00    sub     eax, 1C150E                     ;  eax = eax - $1C150E;
00401106  |.  75 13          jnz     short Butland'.0040111B         ;  不为0,跳走,失败
00401108  |.  6A 00          push    0                               ; /Style = MB_OK|MB_APPLMODAL
0040110A  |.  68 15304000    push    Butland'.00403015               ; |祝贺你!
0040110F  |.  68 15304000    push    Butland'.00403015               ; |祝贺你!
00401114  |.  6A 00          push    0                               ; |hOwner = NULL
00401116  |.  E8 27010000    call    <jmp.&user32.MessageBoxA>       ; \MessageBoxA
0040111B  |>  C9             leave
0040111C  \.  C2 0800        retn    8                               ;  结束本子程序
上传的附件:
2008-7-12 16:15
0
雪    币: 452
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
再跟了下,晕~
决定下回家看!
2008-7-12 16:27
0
游客
登录 | 注册 方可回帖
返回
//