首页
社区
课程
招聘
[原创]发两个简简单单的CrackMe,大家玩玩?[原创]
发表于: 2007-4-17 22:11 16521

[原创]发两个简简单单的CrackMe,大家玩玩?[原创]

2007-4-17 22:11
16521
发两个简简单单的CrackMe大家玩玩?

最高要求:写出注册机
一般要求:得到注册码
最低要求:成功的爆破

破解我3 & 破解我4(修正版) 下载:->

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (35)
雪    币: 29249
活跃值: (7774)
能力值: ( LV15,RANK:3306 )
在线值:
发帖
回帖
粉丝
2
fenjianren
code3:801038596928785
code4:FFF69779(固定的 )
修正版:FFF3C97B
3:
#include<stdio.h>
main()
{ char name[20],sn[22],tmp[4];
  unsigned ch;
  int i;
  puts("Input name:");
  gets(name);
  strcat(name,"aCaFeeL");
  for (i=0;i<7;i++) {
    ch=name[i];
    ch=ch<<2;
    ch-=2;
    ch=ch%0x1B;
    ch+=0x4F;
    sprintf(tmp,"%u",ch);
    strcat(sn,tmp);
  }
  puts(sn); 
}
2007-4-17 22:54
0
雪    币: 200
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
zcg
3
3:
name: zcg
code: 799584871028787

4:
name: zcg
code: FFF69779

4(修正班):
name: zcg
code: FFF3C972



修正版和bug版都有了,嘿嘿!
破解3、4的编写语言不一样!
2007-4-17 23:07
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
4
嘿``顶你一个!~
搞一下“破解我3”吧``
破解我4是E写的东东`!!!~OD下看到浮点,,好讨厌~~有时间再玩了`
找字符串就断在
0049D134  /.  55            push    ebp
0049D135  |.  8BEC          mov     ebp, esp
0049D137  |.  6A 00         push    0
0049D139  |.  6A 00         push    0
0049D13B  |.  6A 00         push    0
0049D13D  |.  53            push    ebx
0049D13E  |.  8BD8          mov     ebx, eax
0049D140  |.  33C0          xor     eax, eax
0049D142  |.  55            push    ebp
0049D143  |.  68 F0D14900   push    0049D1F0
0049D148  |.  64:FF30       push    dword ptr fs:[eax]
0049D14B  |.  64:8920       mov     dword ptr fs:[eax], esp
0049D14E  |.  8D55 FC       lea     edx, dword ptr [ebp-4]
0049D151  |.  8B83 DC020000 mov     eax, dword ptr [ebx+2DC]
0049D157  |.  E8 3038F9FF   call    0043098C                          ; 取注册名
0049D15C  |.  8B55 FC       mov     edx, dword ptr [ebp-4]
0049D15F  |.  B8 F0084A00   mov     eax, 004A08F0
0049D164  |.  E8 4B6AF6FF   call    00403BB4
0049D169  |.  8D55 F8       lea     edx, dword ptr [ebp-8]
0049D16C  |.  8B83 D8020000 mov     eax, dword ptr [ebx+2D8]
0049D172  |.  E8 1538F9FF   call    0043098C                              ; 取注册码
0049D177  |.  8B55 F8       mov     edx, dword ptr [ebp-8]
0049D17A  |.  B8 F4084A00   mov     eax, 004A08F4                     
0049D17F  |.  E8 306AF6FF   call    00403BB4
0049D184  |.  8D55 F4       lea     edx, dword ptr [ebp-C]
0049D187  |.  A1 F0084A00   mov     eax, dword ptr [4A08F0]
0049D18C  |.  E8 FBFEFFFF   call    0049D08C                          ; 跟进去call1
0049D191  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
0049D194  |.  8B15 F4084A00 mov     edx, dword ptr [4A08F4]
0049D19A  |.  E8 516DF6FF   call    00403EF0                          ; 对比call,不跟了`
0049D19F  |.  75 17         jnz     short 0049D1B8
0049D1A1  |.  6A 00         push    0                                ; /Arg1 = 00000000
0049D1A3  |.  66:8B0D FCD14>mov     cx, word ptr [49D1FC]            ; |
0049D1AA  |.  B2 02         mov     dl, 2                            ; |
0049D1AC  |.  B8 08D24900   mov     eax, 0049D208                    ; |恭喜,注册成功了!
0049D1B1  |.  E8 C6A2FBFF   call    0045747C                         ; \破解我3.0045747C
0049D1B6  |.  EB 15         jmp     short 0049D1CD
0049D1B8  |>  6A 00         push    0                                ; /Arg1 = 00000000
0049D1BA  |.  66:8B0D FCD14>mov     cx, word ptr [49D1FC]            ; |
0049D1C1  |.  B2 01         mov     dl, 1                            ; |
0049D1C3  |.  B8 24D24900   mov     eax, 0049D224                    ; |加油,注册不成功!
0049D1C8  |.  E8 AFA2FBFF   call    0045747C                         ; \破解我3.0045747C

call1:
0049D08C  /$  55            push    ebp
0049D08D  |.  8BEC          mov     ebp, esp
0049D08F  |.  83C4 F8       add     esp, -8
0049D092  |.  53            push    ebx
0049D093  |.  56            push    esi
0049D094  |.  33C9          xor     ecx, ecx
0049D096  |.  894D F8       mov     dword ptr [ebp-8], ecx
0049D099  |.  8BF2          mov     esi, edx
0049D09B  |.  8945 FC       mov     dword ptr [ebp-4], eax
0049D09E  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
0049D0A1  |.  E8 EE6EF6FF   call    00403F94
0049D0A6  |.  33C0          xor     eax, eax
0049D0A8  |.  55            push    ebp
0049D0A9  |.  68 14D14900   push    0049D114
0049D0AE  |.  64:FF30       push    dword ptr fs:[eax]
0049D0B1  |.  64:8920       mov     dword ptr fs:[eax], esp
0049D0B4  |.  8D45 FC       lea     eax, dword ptr [ebp-4]
0049D0B7  |.  BA 2CD14900   mov     edx, 0049D12C                    ;  "acafeel"作者大名到edx
0049D0BC  |.  E8 276DF6FF   call    00403DE8                         ;  第二位,第四位,最后一位变为大写,连到注册名后面
0049D0C1  |.  BB 01000000   mov     ebx, 1
0049D0C6  |>  8B45 FC       /mov     eax, dword ptr [ebp-4]          ;  循环开始
0049D0C9  |.  0FB64418 FF   |movzx   eax, byte ptr [eax+ebx-1]       ;  每次循环取注册名各个字符
0049D0CE  |.  C1E0 02       |shl     eax, 2                          ;  左移2位
0049D0D1  |.  83E8 02       |sub     eax, 2                          ;  再减2
0049D0D4  |.  B9 1B000000   |mov     ecx, 1B                         ;  0x1b到ecx
0049D0D9  |.  99            |cdq
0049D0DA  |.  F7F9          |idiv    ecx                             ;  结果除以0x1b
0049D0DC  |.  8BC2          |mov     eax, edx
0049D0DE  |.  83C0 4F       |add     eax, 4F                         ;  余数加上0x4f
0049D0E1  |.  8D55 F8       |lea     edx, dword ptr [ebp-8]
0049D0E4  |.  E8 1FB5F6FF   |call    00408608                        ;  加上后格式化为十进制字符串,每次循环都连起来
0049D0E9  |.  8B55 F8       |mov     edx, dword ptr [ebp-8]
0049D0EC  |.  8BC6          |mov     eax, esi
0049D0EE  |.  E8 F56CF6FF   |call    00403DE8                        
0049D0F3  |.  43            |inc     ebx                             ;  计数器加一
0049D0F4  |.  83FB 08       |cmp     ebx, 8                          ;  ebx计数器从一开始,循环7次
0049D0F7  |.^ 75 CD         \jnz     short 0049D0C6
0049D0F9  |.  33C0          xor     eax, eax
0049D0FB  |.  5A            pop     edx
0049D0FC  |.  59            pop     ecx
0049D0FD  |.  59            pop     ecx
0049D0FE  |.  64:8910       mov     dword ptr fs:[eax], edx
0049D101  |.  68 1BD14900   push    0049D11B
0049D106  |>  8D45 F8       lea     eax, dword ptr [ebp-8]
0049D109  |.  BA 02000000   mov     edx, 2
0049D10E  |.  E8 716AF6FF   call    00403B84
0049D113  \.  C3            retn

很简单``就这样完了`
注册码大于7位的话作者的大名就没用处了``哦呵呵呵`连不连在后面无所谓了`
所以有这个bug``呵,,
我输入的是"jiangwu55"
得到"96928785849486"
输入"jiangwu!@@$#@%$#^&%$&**^&($%^%$"
也得到"96928785849486"
而且没有注册名长度限制

注册机顺便写下,,注意``没编译过`临时写的!!~
编译器不通过自己修改下!^-^:
#include <iostream.h>
#include <string.h>
#include <stdio.h>
int main()
{
        char name[100],code[100],temp[5];
        int i;
        cout<<"Your name:";
        cin>>name;
            if(strlen(name)<=8)
        {
                strcat(name,"sCaFeeL");
        }
        memset(code,0,sizeof(code));
        for(i=0;i<7;i++)
        {
                sprintf(temp,"%d",((name[i]<<2)-2)%0x1b+0x4f);
                strcat(code,temp);
                memset(temp,0,sizeof(temp));
        }
        cout<<"Your Code:"<<code<<endl;
}
2007-4-18 18:55
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
code3

name:todcqy
sn:828999959710287
现在看看算法是怎么样的!
2007-4-23 19:21
0
雪    币: 200
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
zcg
6
谁写出了破解我4(修正版)的算法?
想多了解一下易语言,给个看看??
2007-4-24 00:12
0
雪    币: 405
活跃值: (10)
能力值: ( LV9,RANK:1130 )
在线值:
发帖
回帖
粉丝
7
6楼的兄弟有兴趣的看看我的分析,希望你能看懂:
破解我4(修正版)分析如下:

00419556    55              push    ebp
00419557    8BEC            mov     ebp, esp
00419559    81EC 48000000   sub     esp, 48
0041955F    6A FF           push    -1
00419561    6A 08           push    8
00419563    68 11000116     push    16010011
00419568    68 01000152     push    52010001
0041956D    E8 9A030000     call    0041990C                         ; 取出假码的call
00419572    83C4 10         add     esp, 10
00419575    8945 FC         mov     [ebp-4], eax                     ; 放到变量
00419578    68 04000080     push    80000004
0041957D    6A 00           push    0
0041957F    8B45 FC         mov     eax, [ebp-4]
00419582    85C0            test    eax, eax
00419584    75 05           jnz     short 0041958B
00419586    B8 D8C04000     mov     eax, 0040C0D8
0041958B    50              push    eax
0041958C    68 01000000     push    1
00419591    BB 30010000     mov     ebx, 130
00419596    E8 65030000     call    00419900                         ; 计算位数,就是取文本长度()
0041959B    83C4 10         add     esp, 10
0041959E    8945 F8         mov     [ebp-8], eax
004195A1    8B5D FC         mov     ebx, [ebp-4]
004195A4    85DB            test    ebx, ebx
004195A6    74 09           je      short 004195B1
004195A8    53              push    ebx
004195A9    E8 58030000     call    00419906
004195AE    83C4 04         add     esp, 4
004195B1    837D F8 08      cmp     dword ptr [ebp-8], 8             ; 看看假码是否为8位数,不是8位数就~~~~~~~~~
004195B5    0F85 ED010000   jnz     004197A8
004195BB    6A FF           push    -1
004195BD    6A 08           push    8
004195BF    68 10000116     push    16010010
004195C4    68 01000152     push    52010001
004195C9    E8 3E030000     call    0041990C                         ; 取出用户名的call
004195CE    83C4 10         add     esp, 10
004195D1    8945 FC         mov     [ebp-4], eax
004195D4    68 04000080     push    80000004
004195D9    6A 00           push    0
004195DB    8B45 FC         mov     eax, [ebp-4]
004195DE    85C0            test    eax, eax
004195E0    75 05           jnz     short 004195E7
004195E2    B8 D8C04000     mov     eax, 0040C0D8
004195E7    50              push    eax
004195E8    68 01000000     push    1
004195ED    BB 30010000     mov     ebx, 130
004195F2    E8 09030000     call    00419900                         ; 计算位数
004195F7    83C4 10         add     esp, 10
004195FA    8945 F8         mov     [ebp-8], eax
004195FD    8B5D FC         mov     ebx, [ebp-4]
00419600    85DB            test    ebx, ebx
00419602    74 09           je      short 0041960D
00419604    53              push    ebx
00419605    E8 FC020000     call    00419906
0041960A    83C4 04         add     esp, 4
0041960D    6A FF           push    -1
0041960F    6A 08           push    8
00419611    68 10000116     push    16010010
00419616    68 01000152     push    52010001
0041961B    E8 EC020000     call    0041990C                         ; 又取用户名
00419620    83C4 10         add     esp, 10
00419623    8945 F4         mov     [ebp-C], eax
00419626    68 04000080     push    80000004
0041962B    6A 00           push    0
0041962D    8B45 F4         mov     eax, [ebp-C]
00419630    85C0            test    eax, eax
00419632    75 05           jnz     short 00419639
00419634    B8 D8C04000     mov     eax, 0040C0D8
00419639    50              push    eax
0041963A    68 01000000     push    1
0041963F    BB 30010000     mov     ebx, 130
00419644    E8 B7020000     call    00419900                         ; 计算位数。为什么取两次???
00419649    83C4 10         add     esp, 10
0041964C    8945 F0         mov     [ebp-10], eax
0041964F    8B5D F4         mov     ebx, [ebp-C]
00419652    85DB            test    ebx, ebx
00419654    74 09           je      short 0041965F
00419656    53              push    ebx
00419657    E8 AA020000     call    00419906
0041965C    83C4 04         add     esp, 4
0041965F    DB45 F0         fild    dword ptr [ebp-10]               ; 浮点运算。用户名位数
00419662    DD5D E8         fstp    qword ptr [ebp-18]
00419665    DD45 E8         fld     qword ptr [ebp-18]
00419668    DC35 D9C04000   fdiv    qword ptr [40C0D9]               ; 6/3。除以3
0041966E    DD5D E0         fstp    qword ptr [ebp-20]
00419671    DB45 F8         fild    dword ptr [ebp-8]
00419674    DD5D D8         fstp    qword ptr [ebp-28]
00419677    DD45 D8         fld     qword ptr [ebp-28]
0041967A    DC45 E0         fadd    qword ptr [ebp-20]               ; 6+2=8
0041967D    DD5D D0         fstp    qword ptr [ebp-30]
00419680    DD45 D0         fld     qword ptr [ebp-30]
00419683    DC25 E1C04000   fsub    qword ptr [40C0E1]               ; 800402这个常数。这里是8-800402=-800394
00419689    DD5D C8         fstp    qword ptr [ebp-38]
0041968C    68 01060080     push    80000601
00419691    FF75 CC         push    dword ptr [ebp-34]
00419694    FF75 C8         push    dword ptr [ebp-38]
00419697    68 01000000     push    1
0041969C    BB 60000000     mov     ebx, 60
004196A1    E8 5A020000     call    00419900                         ; 把上面减的结果(是负数)转成16进制
004196A6    83C4 10         add     esp, 10                          ; 这个16进制字符串就是注册码
004196A9    68 01030080     push    80000301
004196AE    6A 00           push    0
004196B0    50              push    eax
004196B1    68 01000000     push    1
004196B6    BB D4010000     mov     ebx, 1D4
004196BB    E8 40020000     call    00419900
004196C0    83C4 10         add     esp, 10                          ; 我的用户名“binbin”对应的是下面这个注册码
004196C3    8945 C0         mov     [ebp-40], eax                    ; "FFF3C976"
004196C6    6A FF           push    -1
004196C8    6A 08           push    8
004196CA    68 11000116     push    16010011
004196CF    68 01000152     push    52010001
004196D4    E8 33020000     call    0041990C                         ; 取出假码的call
004196D9    83C4 10         add     esp, 10
004196DC    8945 BC         mov     [ebp-44], eax                    ; 假码放到一个变量里面
004196DF    8B45 C0         mov     eax, [ebp-40]
004196E2    50              push    eax                              ; 这三句一看就知道是比较真假码了
004196E3    FF75 BC         push    dword ptr [ebp-44]
004196E6    E8 CEFDFFFF     call    004194B9
004196EB    83C4 08         add     esp, 8
004196EE    83F8 00         cmp     eax, 0
004196F1    B8 00000000     mov     eax, 0
004196F6    0F94C0          sete    al
004196F9    8945 B8         mov     [ebp-48], eax                    ; 这个是注册标志位。放到一个变量里
004196FC    8B5D BC         mov     ebx, [ebp-44]
004196FF    85DB            test    ebx, ebx
00419701    74 09           je      short 0041970C
00419703    53              push    ebx
00419704    E8 FD010000     call    00419906
00419709    83C4 04         add     esp, 4
0041970C    8B5D C0         mov     ebx, [ebp-40]
0041970F    85DB            test    ebx, ebx
00419711    74 09           je      short 0041971C
00419713    53              push    ebx
00419714    E8 ED010000     call    00419906
00419719    83C4 04         add     esp, 4
0041971C    837D B8 00      cmp     dword ptr [ebp-48], 0            ; 标志位是否为0.也就是上面真假码比较是否相等
00419720    0F84 41000000   je      00419767                         ; 下面不用看了。
2007-4-24 09:47
0
雪    币: 200
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
zcg
8
楼上是强悍呀!
2007-4-24 12:10
0
雪    币: 333
活跃值: (116)
能力值: ( LV9,RANK:570 )
在线值:
发帖
回帖
粉丝
9
破解我4的算法其实来源于这里:

http://bbs.pediy.com/showthread.php?t=42692
2007-4-24 15:44
0
雪    币: 200
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
破解我3:
~Domino~
95798981928589

破解我4:
~Domino~
FFF3C978
2007-4-24 16:14
0
雪    币: 244
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
4的怎么下断我菜鸟...高人帮忙...
2007-4-24 16:50
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
第4的用传统的E语言下断方法,还是不能找到字符串提示~
2007-4-24 17:03
0
雪    币: 244
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
传统的?怎么弄?能讲讲么?
2007-4-24 17:06
0
雪    币: 244
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
为什么没人指点迷津呢...
2007-4-25 15:59
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
15
od载入->alt+m打开内存镜像->在第一块.ecode上f2下断->回到程序点注册就被断下了
2007-4-26 08:47
0
雪    币: 244
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
16
感谢楼上的,本菜鸟好多程序都不知道如何下断,
2007-4-26 19:00
0
雪    币: 350
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
大侠们,我怎么搞不到下断的位置啊,哪位指点一下小老弟俺呢。我用的是OllyIce
2007-4-30 15:05
0
雪    币: 109
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
010D505D ; int __stdcall GetFunctionAddress(int BaseAddress,int CryptCode)
010D505D GetFunctionAddress proc near
010D505D
010D505D FunctionAddress= dword ptr -4
010D505D BaseAddress= dword ptr  4
010D505D CryptCode= dword ptr  8
010D505D
010D505D         pusha                                     ; 1
010D505E         push    eax
010D505F         push    edx
010D5060         push    ecx
010D5061         push    ecx
010D5062         pusha
010D5063         popa
010D5064         sidt    qword ptr [esp-2]
010D5069         pop     ecx
010D506A         jmp     loc_10D507E
010D506F         db 11h, 0AAh, 58h, 8Eh, 9Bh, 0E4h, 0CFh, 16h, 67h, 0C0h, 0DDh
010D506F         db 0F7h, 0F8h, 13h, 0C5h
010D507E
010D507E loc_10D507E:
010D507E         pop     ecx
010D507F         rdtsc
010D5081         jnb     loc_10D5089
010D5087         pusha
010D5088         popa
010D5089
010D5089 loc_10D5089:
010D5089         pop     edx
2007-4-30 19:49
0
雪    币: 109
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
010D505D ; int __stdcall GetFunctionAddress(int BaseAddress,int CryptCode)
010D505D GetFunctionAddress proc near
010D505D
010D505D FunctionAddress= dword ptr -4
010D505D BaseAddress= dword ptr  4
010D505D CryptCode= dword ptr  8
010D505D
010D505D         pusha                                     ; 1
010D505E         push    eax
010D505F         push    edx
010D5060         push    ecx
010D5061         push    ecx
010D5062         pusha
010D5063         popa
010D5064         sidt    qword ptr [esp-2]
010D5069         pop     ecx
010D506A         jmp     loc_10D507E
010D506F         db 11h, 0AAh, 58h, 8Eh, 9Bh, 0E4h, 0CFh, 16h, 67h, 0C0h, 0DDh
010D506F         db 0F7h, 0F8h, 13h, 0C5h
010D507E
010D507E loc_10D507E:
010D507E         pop     ecx
010D507F         rdtsc
010D5081         jnb     loc_10D5089
010D5087         pusha
010D5088         popa
010D5089
010D5089 loc_10D5089:
010D5089         pop     edx
2007-4-30 19:49
0
雪    币: 234
活跃值: (25)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
20
最近没时间玩crackme了,下载下来有时间一定看看。(其他人的也是)
2007-4-30 19:55
0
雪    币: 244
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
21
希望老大们以后在发破文时把断点的设置说清楚点,搞不太懂啊.
2007-4-30 20:17
0
雪    币: 212
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
22
破解三,破解四,终于破解了,多谢大侠门的指点。
2007-5-7 19:47
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
破解我3:
cyan
9510287858710287

破解我4 幸好有高人指点
cyan
FFF3C973
2007-5-8 16:23
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
破解4我都没办法下断.你是怎么入手的.请教
2007-5-8 17:49
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
25
就是简单的才多人跟帖
2007-5-8 18:23
0
游客
登录 | 注册 方可回帖
返回
//