首页
社区
课程
招聘
[原创]菜菜鸟写的第一个Crackme
发表于: 2009-3-27 14:03 14336

[原创]菜菜鸟写的第一个Crackme

2009-3-27 14:03
14336
我的第一个Crackme,请各位玩儿一下。
成功提示“Good!”。

;;===========
由于测试不完全,给各位大牛造成了一定的麻烦,菜菜鸟第一次写Crackme,实在不好意思!
附件已经更新了一个版本。

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (39)
雪    币: 347
活跃值: (25)
能力值: ( LV9,RANK:420 )
在线值:
发帖
回帖
粉丝
2
00401457    .  56                push esi
00401458    .  8BF1              mov esi,ecx
0040145A    .  6A 01             push 1
0040145C    .  E8 FB740100       call CrackMe0.0041895C
00401461    .  8B8E 98000000     mov ecx,dword ptr ds:[esi+98]       ;  我输入的是123456
00401467    .  81F9 A0860100     cmp ecx,186A0
0040146D    .  7C 44             jl short CrackMe0.004014B3          ;  不能小于100000
0040146F    .  81F9 DF930400     cmp ecx,493DF
00401475    .  7D 3C             jge short CrackMe0.004014B3         ;  不能大于或等于299999
00401477    .  33C0              xor eax,eax
00401479    .  388431 A0000000   cmp byte ptr ds:[ecx+esi+A0],al
00401480    .  74 33             je short CrackMe0.004014B5


这里是不是有问题呢?那比较无论如何都是0,Bug?还是我没看明白?

00401479  38 84 31 A0 00 00 00                             8??..t3

这是cmp byte ptr ds:[esi+ecx+A0],al堆栈里的值
2009-3-27 15:36
0
雪    币: 1270
活跃值: (109)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
没问题啊,再说就漏馅儿了,但不是bug。
2009-3-27 15:54
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
嘿嘿~~~~~~~~~~~~我太坏了.



上传的附件:
2009-3-27 16:01
0
雪    币: 347
活跃值: (25)
能力值: ( LV9,RANK:420 )
在线值:
发帖
回帖
粉丝
5
如果那个je不跳的话,
004014AA    .  E8 1E000000         call CrackMe0.004014CD             ; \CrackMe0.004014CD

执行到上面那个call的时候程序就会挂掉,我不会玩了,等的看大牛表演

楼上的是不是改了参数的字符串?
2009-3-27 16:08
0
雪    币: 1270
活跃值: (109)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
这个的确是bug,不过不影响正确注册成功,也不能利用这个bug注册成功,不知道这算不算违反了相关规定……
大牛请继续支持菜菜鸟啊。
2009-3-27 16:20
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
.....................我把
0041821E      FF7424 10     push    dword ptr [esp+10]               ;  

0042B0D0指向的错误信息改成 0042B0C8 的good 了,哈哈.~~~~~~

坏吧
2009-3-27 16:24
0
雪    币: 347
活跃值: (25)
能力值: ( LV9,RANK:420 )
在线值:
发帖
回帖
粉丝
8
嗯嗯嗯,那段算法我没仔细看,我只是想知道那个 xor eax,eax 和下面的je 是怎么回事

可是我没调戏出来

弱弱的问一下:是不是你故意给写成那样的?
2009-3-27 16:28
0
雪    币: 1270
活跃值: (109)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
9
让大牛笑话了,这个是我测试不完全造成的bug,谁也不希望自己的程序D机啊(虽然干扰了调试)。
今天没时间改正这个bug了,请各位多多包涵!
2009-3-27 16:44
0
雪    币: 423
活跃值: (11)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
10
004016B0  |. /75 08 jnz     short 004016BA
004016B2  |. |FF35 >push    dword ptr [42B0C4]               ;  Good!提示
004016B8  |. |EB 06 jmp     short 004016C0
2009-3-27 17:00
0
雪    币: 423
活跃值: (11)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
11
算法还没看懂,好像又是什么游戏。

004013ED  |> /8D48 >/lea     ecx, dword ptr [eax+1]
004013F0  |. |C600 >|mov     byte ptr [eax], 21
004013F3  |. |C601 >|mov     byte ptr [ecx], 16
004013F6  |. |8008 >|or      byte ptr [eax], 1
004013F9  |. |8BC1  |mov     eax, ecx
004013FB  |. |8D0C0>|lea     ecx, dword ptr [esi+eax]
004013FE  |. |81F9 >|cmp     ecx, 493DF
00401404  |.^\7C E7 \jl      short 004013ED
00401406  |.  6A 02 push    2
00401408  |.  59    pop     ecx
00401409  |.  5E    pop     esi
0040140A  |>  803C0>/cmp     byte ptr [edx+ecx], 0
0040140E  |.  74 18 |je      short 00401428
00401410  |.  81F9 >|cmp     ecx, 249F0
00401416  |.  8D040>|lea     eax, dword ptr [ecx+ecx]
00401419  |.  7D 0D |jge     short 00401428
0040141B  |>  80240>|/and     byte ptr [edx+eax], 0
0040141F  |.  03C1  ||add     eax, ecx
00401421  |.  3D E0>||cmp     eax, 493E0
00401426  |.^ 7C F3 |\jl      short 0040141B
00401428  |>  41    |inc     ecx
00401429  |.  81F9 >|cmp     ecx, 249F1
0040142F  |.^ 7C D9 \jl      short 0040140A
00401431  \.  C3    retn

上述画了一幅以“!”为主的图,没时间细看。
cmp byte ptr ds:[esi+ecx+A0],al

[esi+ecx+A0]里的地址对应“!”时,21当然不等于0,才进行下面的部分。

就因为猜到是一种游戏,所以不想玩了。
2009-3-27 17:07
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
老实说,这种 CM 一看就反感,没精力和你耗,如果有创意的还可以跟跟,这样的消耗生命 ,分析十分钟 DEL

00401467   .  81F9 A0860100 cmp     ecx, 186A0               必需小于这个数
0040146D   .  7C 44         jl      short 004014B3     
0040146F   .  81F9 DF930400 cmp     ecx, 493DF               同时小于这个数
00401475   .  7D 3C         jge     short 004014B3
00401477   .  33C0          xor     eax, eax
00401479      388431 A00000>cmp     byte ptr [ecx+esi+A0], al      ECX 作为指针,找到不是 0
00401480   .  74 33         je      short 004014B5                 的可以过第一关
——————————————————————————————————————————
00401482   .  53            push    ebx
00401483   .  57            push    edi
00401484   .  8BC1          mov     eax, ecx
00401486   .  6A 64         push    64
00401488   .  99            cdq
00401489   .  5F            pop     edi
0040148A   .  F7FF          idiv    edi                              ;  / EDI
0040148C   .  8BC1          mov     eax, ecx
0040148E   .  BF 10270000   mov     edi, 2710
00401493   .  8BDF          mov     ebx, edi
00401495   .  52            push    edx                              ; /上面余数就是这里有用
00401496   .  6A 64         push    64                               ; |
00401498   .  99            cdq                                      ; |
00401499   .  F7FB          idiv    ebx                              ; |
0040149B   .  5B            pop     ebx                              ; |
0040149C   .  8BC2          mov     eax, edx                         ; |第二次有用的东西
0040149E   .  99            cdq                                      ; |
0040149F   .  F7FB          idiv    ebx                              ; |
004014A1   .  50            push    eax                              ; |第三个有用
004014A2   .  8BC1          mov     eax, ecx                         ; |
004014A4   .  99            cdq                                      ; |
004014A5   .  F7FF          idiv    edi                              ; |
004014A7   .  8BCE          mov     ecx, esi                         ; |
004014A9   .  50            push    eax                              ; | 4
004014AA   .  E8 1E000000   call    004014CD                         ;
——————————————————————————————————————
进上面的 CALL 后一大堆的东西, DEL

004014CD  /$  55            push    ebp
004014CE  |.  8BEC          mov     ebp, esp
004014D0  |.  83EC 10       sub     esp, 10
004014D3  |.  53            push    ebx
004014D4  |.  56            push    esi
004014D5  |.  57            push    edi
004014D6  |.  33F6          xor     esi, esi
004014D8  |.  33FF          xor     edi, edi
004014DA  |.  3975 0C       cmp     dword ptr [ebp+C], esi
004014DD  |.  894D F8       mov     dword ptr [ebp-8], ecx
004014E0  |.  8975 FC       mov     dword ptr [ebp-4], esi
004014E3  |.  74 0A         je      short 004014EF
004014E5  |.  3975 08       cmp     dword ptr [ebp+8], esi
004014E8  |.  74 05         je      short 004014EF
004014EA  |.  3975 10       cmp     dword ptr [ebp+10], esi
004014ED  |.  75 0D         jnz     short 004014FC
004014EF  |>  56            push    esi
004014F0  |.  56            push    esi
004014F1  |.  FF35 C0B04200 push    dword ptr [42B0C0]               ;  CrackMe0.0042B0D0
004014F7  |.  E8 FF6C0100   call    004181FB
004014FC  |>  8B45 08       mov     eax, dword ptr [ebp+8]
004014FF  |.  83E0 0F       and     eax, 0F
00401502  |.  3975 0C       cmp     dword ptr [ebp+C], esi
00401505  |.  8945 F4       mov     dword ptr [ebp-C], eax
00401508  |.  7E 22         jle     short 0040152C
0040150A  |.  8B4D 0C       mov     ecx, dword ptr [ebp+C]
0040150D  |>  6A 10         /push    10
0040150F  |.  5A            |pop     edx
00401510  |.  2BD0          |sub     edx, eax
00401512  |.  8B0485 F02542>|mov     eax, dword ptr [eax*4+4225F0]
00401519  |.  33C2          |xor     eax, edx
0040151B  |.  8BD0          |mov     edx, eax
0040151D  |.  83E0 0F       |and     eax, 0F
00401520  |.  C1FA 04       |sar     edx, 4
00401523  |.  83E2 01       |and     edx, 1
00401526  |.  0155 FC       |add     dword ptr [ebp-4], edx
00401529  |.  49            |dec     ecx
0040152A  |.^ 75 E1         \jnz     short 0040150D
0040152C  |>  8B4D 08       mov     ecx, dword ptr [ebp+8]
0040152F  |.  C1F9 04       sar     ecx, 4
00401532  |.  837D FC 00    cmp     dword ptr [ebp-4], 0
00401536  |.  894D F0       mov     dword ptr [ebp-10], ecx
00401539  |.  74 20         je      short 0040155B
0040153B  |.  7E 1E         jle     short 0040155B
0040153D  |.  8B55 FC       mov     edx, dword ptr [ebp-4]
00401540  |>  6A 10         /push    10
00401542  |.  5B            |pop     ebx
00401543  |.  2BD9          |sub     ebx, ecx
00401545  |.  8B0C8D F02542>|mov     ecx, dword ptr [ecx*4+4225F0]
0040154C  |.  33CB          |xor     ecx, ebx
0040154E  |.  8BD9          |mov     ebx, ecx
00401550  |.  C1FB 04       |sar     ebx, 4
00401553  |.  83E3 01       |and     ebx, 1
00401556  |.  03F3          |add     esi, ebx
00401558  |.  4A            |dec     edx
00401559  |.^ 75 E5         \jnz     short 00401540
0040155B  |>  C1E6 04       shl     esi, 4
0040155E  |.  03F1          add     esi, ecx
00401560  |.  8B4D 10       mov     ecx, dword ptr [ebp+10]
00401563  |.  C1E6 04       shl     esi, 4
00401566  |.  03F0          add     esi, eax
00401568  |.  8BC1          mov     eax, ecx
0040156A  |.  83E0 0F       and     eax, 0F
0040156D  |.  85F6          test    esi, esi
0040156F  |.  7E 1F         jle     short 00401590
00401571  |>  6A 10         /push    10
00401573  |.  5A            |pop     edx
00401574  |.  2BD0          |sub     edx, eax
00401576  |.  8B0485 F02542>|mov     eax, dword ptr [eax*4+4225F0]
0040157D  |.  33C2          |xor     eax, edx
0040157F  |.  8BD0          |mov     edx, eax
00401581  |.  83E0 0F       |and     eax, 0F
00401584  |.  C1FA 04       |sar     edx, 4
00401587  |.  83E2 01       |and     edx, 1
0040158A  |.  0155 FC       |add     dword ptr [ebp-4], edx
0040158D  |.  4E            |dec     esi
0040158E  |.^ 75 E1         \jnz     short 00401571
00401590  |>  8B55 FC       mov     edx, dword ptr [ebp-4]
00401593  |.  C1F9 04       sar     ecx, 4
00401596  |.  85D2          test    edx, edx
00401598  |.  74 1D         je      short 004015B7
0040159A  |.  7E 1B         jle     short 004015B7
0040159C  |>  6A 10         /push    10
0040159E  |.  5E            |pop     esi
0040159F  |.  2BF1          |sub     esi, ecx
004015A1  |.  8B0C8D F02542>|mov     ecx, dword ptr [ecx*4+4225F0]
004015A8  |.  33CE          |xor     ecx, esi
004015AA  |.  8BF1          |mov     esi, ecx
004015AC  |.  C1FE 04       |sar     esi, 4
004015AF  |.  83E6 01       |and     esi, 1
004015B2  |.  03FE          |add     edi, esi
004015B4  |.  4A            |dec     edx
004015B5  |.^ 75 E5         \jnz     short 0040159C
004015B7  |>  C1E7 04       shl     edi, 4
004015BA  |.  8B75 0C       mov     esi, dword ptr [ebp+C]
004015BD  |.  03F9          add     edi, ecx
004015BF  |.  C1E7 04       shl     edi, 4
004015C2  |.  03F8          add     edi, eax
004015C4  |.  33D2          xor     edx, edx
004015C6  |.  897D 10       mov     dword ptr [ebp+10], edi
004015C9  |.  33FF          xor     edi, edi
004015CB  |.  83FE 01       cmp     esi, 1
004015CE  |.  7E 63         jle     short 00401633
004015D0  |.  4E            dec     esi
004015D1  |.  8975 0C       mov     dword ptr [ebp+C], esi
004015D4  |>  8B4D 08       /mov     ecx, dword ptr [ebp+8]
004015D7  |.  8B45 F4       |mov     eax, dword ptr [ebp-C]
004015DA  |.  85C9          |test    ecx, ecx
004015DC  |.  7E 1E         |jle     short 004015FC
004015DE  |>  6A 10         |/push    10
004015E0  |.  5E            ||pop     esi
004015E1  |.  2BF0          ||sub     esi, eax
004015E3  |.  8B0485 F02542>||mov     eax, dword ptr [eax*4+4225F0]
004015EA  |.  33C6          ||xor     eax, esi
004015EC  |.  8BF0          ||mov     esi, eax
004015EE  |.  83E0 0F       ||and     eax, 0F
004015F1  |.  C1FE 04       ||sar     esi, 4
004015F4  |.  83E6 01       ||and     esi, 1
004015F7  |.  03FE          ||add     edi, esi
004015F9  |.  49            ||dec     ecx
004015FA  |.^ 75 E2         |\jnz     short 004015DE
004015FC  |>  8B4D F0       |mov     ecx, dword ptr [ebp-10]
004015FF  |.  85FF          |test    edi, edi
00401601  |.  74 1F         |je      short 00401622
00401603  |.  7E 1D         |jle     short 00401622
00401605  |.  8BF7          |mov     esi, edi
00401607  |>  6A 10         |/push    10
00401609  |.  5B            ||pop     ebx
0040160A  |.  2BD9          ||sub     ebx, ecx
0040160C  |.  8B0C8D F02542>||mov     ecx, dword ptr [ecx*4+4225F0]
00401613  |.  33CB          ||xor     ecx, ebx
00401615  |.  8BD9          ||mov     ebx, ecx
00401617  |.  C1FB 04       ||sar     ebx, 4
0040161A  |.  83E3 01       ||and     ebx, 1
0040161D  |.  03D3          ||add     edx, ebx
0040161F  |.  4E            ||dec     esi
00401620  |.^ 75 E5         |\jnz     short 00401607
00401622  |>  FF4D 0C       |dec     dword ptr [ebp+C]
00401625  |.^ 75 AD         \jnz     short 004015D4
00401627  |.  C1E2 04       shl     edx, 4
0040162A  |.  03D1          add     edx, ecx
0040162C  |.  C1E2 04       shl     edx, 4
0040162F  |.  03D0          add     edx, eax
00401631  |.  EB 03         jmp     short 00401636
00401633  |>  8B55 08       mov     edx, dword ptr [ebp+8]
00401636  |>  8BFA          mov     edi, edx
00401638  |.  33D2          xor     edx, edx
0040163A  |.  8BC7          mov     eax, edi
0040163C  |.  C745 0C 04000>mov     dword ptr [ebp+C], 4
00401643  |.  83E0 0F       and     eax, 0F
00401646  |.  33F6          xor     esi, esi
00401648  |>  85FF          /test    edi, edi
0040164A  |.  7E 20         |jle     short 0040166C
0040164C  |.  8BCF          |mov     ecx, edi
0040164E  |>  6A 10         |/push    10
00401650  |.  5B            ||pop     ebx
00401651  |.  2BD8          ||sub     ebx, eax
00401653  |.  8B0485 F02542>||mov     eax, dword ptr [eax*4+4225F0]
0040165A  |.  33C3          ||xor     eax, ebx
0040165C  |.  8BD8          ||mov     ebx, eax
0040165E  |.  83E0 0F       ||and     eax, 0F
00401661  |.  C1FB 04       ||sar     ebx, 4
00401664  |.  83E3 01       ||and     ebx, 1
00401667  |.  03F3          ||add     esi, ebx
00401669  |.  49            ||dec     ecx
0040166A  |.^ 75 E2         |\jnz     short 0040164E
0040166C  |>  8BCF          |mov     ecx, edi
0040166E  |.  C1F9 04       |sar     ecx, 4
00401671  |.  85F6          |test    esi, esi
00401673  |.  74 22         |je      short 00401697
00401675  |.  7E 20         |jle     short 00401697
00401677  |.  8975 08       |mov     dword ptr [ebp+8], esi
0040167A  |>  6A 10         |/push    10
0040167C  |.  5B            ||pop     ebx
0040167D  |.  2BD9          ||sub     ebx, ecx
0040167F  |.  8B0C8D F02542>||mov     ecx, dword ptr [ecx*4+4225F0]
00401686  |.  33CB          ||xor     ecx, ebx
00401688  |.  8BD9          ||mov     ebx, ecx
0040168A  |.  C1FB 04       ||sar     ebx, 4
0040168D  |.  83E3 01       ||and     ebx, 1
00401690  |.  03D3          ||add     edx, ebx
00401692  |.  FF4D 08       ||dec     dword ptr [ebp+8]
00401695  |.^ 75 E3         |\jnz     short 0040167A
00401697  |>  FF4D 0C       |dec     dword ptr [ebp+C]
0040169A  |.^ 75 AC         \jnz     short 00401648
0040169C  |.  C1E2 04       shl     edx, 4
0040169F  |.  03D1          add     edx, ecx
004016A1  |.  5F            pop     edi
004016A2  |.  C1E2 04       shl     edx, 4
004016A5  |.  5E            pop     esi
004016A6  |.  03D0          add     edx, eax
004016A8  |.  3B55 10       cmp     edx, dword ptr [ebp+10]
004016AB  |.  5B            pop     ebx
004016AC  |.  6A 00         push    0
004016AE  |.  6A 00         push    0
004016B0  |.  75 08         jnz     short 004016BA
004016B2  |.  FF35 C4B04200 push    dword ptr [42B0C4]               ;  CrackMe0.0042B0C8
004016B8  |.  EB 06         jmp     short 004016C0
004016BA  |>  FF35 C0B04200 push    dword ptr [42B0C0]               ;  CrackMe0.0042B0D0
004016C0  |>  8B4D F8       mov     ecx, dword ptr [ebp-8]
004016C3  |.  E8 336B0100   call    004181FB
004016C8  |.  C9            leave
004016C9  \.  C2 0C00       retn    0C
2009-3-27 17:23
0
雪    币: 1270
活跃值: (109)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
13
楼上大侠多多包涵,这个Crackme比起VM还是差了许多……
只是一个很简单的算法,我也仿照VM花了一下,
算是一个小小的创意吧。
2009-3-27 17:26
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
14
补充一下上面的说法,什么叫有创意,放 10 条代码在你面前(不用什么解码等卑鄙的做法),就是不给你推出正确的注册码,那叫有创意
2009-3-27 17:28
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
高手就是不一样.``
2009-3-27 18:06
0
雪    币: 347
活跃值: (25)
能力值: ( LV9,RANK:420 )
在线值:
发帖
回帖
粉丝
16
膜拜大牛
2009-3-27 18:15
0
雪    币: 1074
活跃值: (160)
能力值: ( LV13,RANK:760 )
在线值:
发帖
回帖
粉丝
17
  我跟了半天,也没搞懂算法,基本上是一张N大的表,还有一张64个DWORD大小的表,然后里面绕来又绕去,实在是晕啊。
2009-3-27 20:05
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
18
发辉你的想像力
2009-3-27 20:16
0
雪    币: 10749
活跃值: (3257)
能力值: (RANK:520 )
在线值:
发帖
回帖
粉丝
19
有些时候拼的是时间和耐力,个人观点
2009-3-27 20:29
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
20
这个不需拼.
2009-3-27 20:42
0
雪    币: 1270
活跃值: (109)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
21
大牛在观战啊?

多谢楼上各位的意见和关注,这个Crackme是对我在单片机领域一些领悟所做的总结,虽然很早就想写出来了,只是最近才有时间……
菜菜鸟没有看过大牛们的代码,不知道这个“方法”(还不能叫算法)有人使用过吗?
2009-3-27 20:44
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
22
你是指质数吗?
还是指 前百=2位+2位+2位
2009-3-27 20:55
0
雪    币: 1270
活跃值: (109)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
23
质数这个条件是一个;还有一个很简单的加减乘除了一下的判断。
我的领悟就是运算方法的实现,质数这个程序是借用教科书上的程序。
2009-3-27 21:16
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
24
运算的判断我应该是错了
2009-3-27 21:22
0
雪    币: 1270
活跃值: (109)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
25
我想:任何运算如果通过一种形式变换(不知道VM是怎样实现的),变成汇编语言之后,都可以起到很好的效果吧……
大牛没有秒杀,我就感到万幸了。
2009-3-27 21:30
0
游客
登录 | 注册 方可回帖
返回
//