首页
社区
课程
招聘
Baby2008制作的CrackMe V1.0
2005-5-21 14:13 12852

Baby2008制作的CrackMe V1.0

2005-5-21 14:13
12852
说明:这是一个我自己修改设计的算法CrackMe,未作防爆破处理,Delphi 7.0编写,目的是测试算法强度,所以未加壳,未防反Dede处理,但加了一点点反调试。那位有空帮忙测试一下算法强度?

有效机器码:Baby2008
注册码:6D83A0D4A1B692AE

附件:CrackMe 1.0.rar

[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

收藏
点赞7
打赏
分享
最新回复 (32)
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
KuNgBiM 66 2005-5-21 17:03
2
0
支持一个!!!
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
baby2008 28 2005-5-21 17:41
3
0
KuNgBiM 最近产量很高啊,支持。有兴趣分析一下我的算法不?
雪    币: 296
活跃值: (250)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
Winter-Night 5 2005-5-21 18:02
4
0
好像对断点做了处理~
简单patch一下
00454A71 JE-->JMP
00454AA6 JNZ-->JMP
看算法时间太长,偷懒咯
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
baby2008 28 2005-5-21 19:20
5
0
最初由 Winter-Night 发布
好像对断点做了处理~
简单patch一下
00454A71 JE-->JMP
00454AA6 JNZ-->JMP
看算法时间太长,偷懒咯


正确,这么容易?不过我是想测试注册算法
雪    币: 221
活跃值: (137)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
xsy3660 4 2005-5-21 20:30
6
0
哈,暴破确是是很容易,不过算法看了一下,也不是太难呀,只是根据机器码与假码一起多做了几个循环而已,若没看错的话,循环后要求得出的字符串与机器码一样即注册成功。
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
baby2008 28 2005-5-21 20:39
7
0
最初由 xsy3660 发布
哈,暴破确是是很容易,不过算法看了一下,也不是太难呀,只是根据机器码与假码一起多做了几个循环而已,若没看错的话,循环后要求得出的字符串与机器码一样即注册成功。


正确 F(注册码)=机器码

我真失败

应该是 F(注册码,机器码)=机器码
雪    币: 221
活跃值: (137)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
xsy3660 4 2005-5-21 21:00
8
0
00454B4E     8D55 FC lea edx,dword ptr ss:[ebp-4]
00454B51     8B83 10>mov eax,dword ptr ds:[ebx+310]
00454B57     E8 6CE7>call CrackMe_.004332C8               ; 取假码
00454B5C     837D FC>cmp dword ptr ss:[ebp-4],0
00454B60     74 40   je short CrackMe_.00454BA2
00454B62     8D55 F8 lea edx,dword ptr ss:[ebp-8]
00454B65     8B83 04>mov eax,dword ptr ds:[ebx+304]
00454B6B     E8 58E7>call CrackMe_.004332C8               ; 取机器码
00454B70     8B45 F8 mov eax,dword ptr ss:[ebp-8]
00454B73     50      push eax
00454B74     8D55 F4 lea edx,dword ptr ss:[ebp-C]
00454B77     8B83 10>mov eax,dword ptr ds:[ebx+310]
00454B7D     E8 46E7>call CrackMe_.004332C8               ; 取假码
00454B82     8B45 F4 mov eax,dword ptr ss:[ebp-C]
00454B85     5A      pop edx
00454B86     E8 35FA>call CrackMe_.004545C0
00454B8B     84C0    test al,al
00454B8D     74 13   je short CrackMe_.00454BA2
00454B8F     6A 40   push 40
00454B91     68 CC4B>push CrackMe_.00454BCC
00454B96     68 D84B>push CrackMe_.00454BD8               ; 注册成功
00454B9B     6A 00   push 0

004545C0     55      push ebp
004545C1     8BEC    mov ebp,esp
004545C3     83C4 F4 add esp,-0C
004545C6     53      push ebx
004545C7     33C9    xor ecx,ecx
004545C9     894D F4 mov dword ptr ss:[ebp-C],ecx
004545CC     8955 F8 mov dword ptr ss:[ebp-8],edx         ; 机器码
004545CF     8945 FC mov dword ptr ss:[ebp-4],eax         ; 假码
004545D2     8B45 FC mov eax,dword ptr ss:[ebp-4]
004545D5     E8 E6FC>call CrackMe_.004042C0
004545DA     8B45 F8 mov eax,dword ptr ss:[ebp-8]         ; 机器码
004545DD     E8 DEFC>call CrackMe_.004042C0
004545E2     33C0    xor eax,eax
004545E4     55      push ebp
004545E5     68 6646>push CrackMe_.00454666
004545EA     64:FF30 push dword ptr fs:[eax]
004545ED     64:8920 mov dword ptr fs:[eax],esp
004545F0     8D55 F4 lea edx,dword ptr ss:[ebp-C]         ; 0
004545F3     8B45 FC mov eax,dword ptr ss:[ebp-4]         ; 假码
004545F6     E8 BDFE>call CrackMe_.004544B8
004545FB     8B45 F8 mov eax,dword ptr ss:[ebp-8]
004545FE     E8 31FF>call CrackMe_.00454534               ; 机器码运算
00454603     8BD8    mov ebx,eax
00454605     8BD3    mov edx,ebx
00454607     C1E2 04 shl edx,4
0045460A     8D45 F4 lea eax,dword ptr ss:[ebp-C]
0045460D     B9 0001>mov ecx,100
00454612     E8 C1FD>call CrackMe_.004543D8               ; 进入
00454617     8BD3    mov edx,ebx
00454619     C1EA 04 shr edx,4
0045461C     8D45 F4 lea eax,dword ptr ss:[ebp-C]
0045461F     B9 0002>mov ecx,200
00454624     E8 AFFD>call CrackMe_.004543D8
00454629     8D45 F4 lea eax,dword ptr ss:[ebp-C]
0045462C     B9 0004>mov ecx,400
00454631     8BD3    mov edx,ebx
00454633     E8 A0FD>call CrackMe_.004543D8
00454638     8B45 F4 mov eax,dword ptr ss:[ebp-C]
0045463B     8B55 F8 mov edx,dword ptr ss:[ebp-8]
0045463E     E8 D9FB>call CrackMe_.0040421C               ; 比较
00454643     75 04   jnz short CrackMe_.00454649
00454645     B3 01   mov bl,1

0045454E     55      push ebp
0045454F     68 B145>push CrackMe_.004545B1
00454554     64:FF30 push dword ptr fs:[eax]
00454557     64:8920 mov dword ptr fs:[eax],esp
0045455A     33DB    xor ebx,ebx
0045455C     8D55 F8 lea edx,dword ptr ss:[ebp-8]
0045455F     8B45 FC mov eax,dword ptr ss:[ebp-4]
00454562     E8 3920>call CrackMe_.004265A0               ; 机器码倒置
00454567     8B45 FC mov eax,dword ptr ss:[ebp-4]
0045456A     E8 61FB>call CrackMe_.004040D0
0045456F     8BD0    mov edx,eax
00454571     85D2    test edx,edx
00454573     7E 21   jle short CrackMe_.00454596
00454575     B8 0100>mov eax,1
0045457A     8B4D FC mov ecx,dword ptr ss:[ebp-4]         ; 机器码
0045457D     0FB64C0>movzx ecx,byte ptr ds:[ecx+eax-1]    ; 取机器码的第i位
00454582     8B75 F8 mov esi,dword ptr ss:[ebp-8]         ; 机器码倒置后的字串
00454585     0FB6740>movzx esi,byte ptr ds:[esi+eax-1]    ; 取机器码的倒数第i位
0045458A     0FAFCE  imul ecx,esi                         ; 相乘
0045458D     0FAFC8  imul ecx,eax                         ; 乘以循环次数
00454590     03D9    add ebx,ecx
00454592     40      inc eax
00454593     4A      dec edx
00454594   ^ 75 E4   jnz short CrackMe_.0045457A
00454596     33C0    xor eax,eax

-----00454612     E8 C1FD>call CrackMe_.004543D8 ----

004543D8     53      push ebx
004543D9     56      push esi
004543DA     57      push edi
004543DB     55      push ebp
004543DC     83C4 F8 add esp,-8
004543DF     8BD9    mov ebx,ecx
004543E1     8BFA    mov edi,edx
004543E3     8BF0    mov esi,eax
004543E5     8B06    mov eax,dword ptr ds:[esi]
004543E7     E8 E4FC>call CrackMe_.004040D0
004543EC     8BE8    mov ebp,eax
004543EE     85ED    test ebp,ebp
004543F0     0F84 BB>je CrackMe_.004544B1
004543F6     8BC7    mov eax,edi
004543F8     C1E8 18 shr eax,18                           ; 清0
004543FB     884424 >mov byte ptr ss:[esp+7],al
004543FF     8BC7    mov eax,edi
00454401     C1E8 10 shr eax,10
00454404     884424 >mov byte ptr ss:[esp+6],al
00454408     8BC7    mov eax,edi
0045440A     C1E8 08 shr eax,8
0045440D     884424 >mov byte ptr ss:[esp+5],al
00454411     8BC7    mov eax,edi
00454413     884424 >mov byte ptr ss:[esp+4],al
00454417     4B      dec ebx
00454418     83FB 00 cmp ebx,0
0045441B     0F8C 90>jl CrackMe_.004544B1
00454421     891C24  mov dword ptr ss:[esp],ebx
00454424     8BFD    mov edi,ebp
00454426     4F      dec edi
00454427     85FF    test edi,edi
00454429     7E 25   jle short CrackMe_.00454450
0045442B     BB 0100>mov ebx,1
00454430     8BC6    mov eax,esi
00454432     E8 F1FE>call CrackMe_.00404328
00454437     8B16    mov edx,dword ptr ds:[esi]
00454439     8A541A >mov dl,byte ptr ds:[edx+ebx-1]
0045443D     325424 >xor dl,byte ptr ss:[esp+5]
00454441     8B0E    mov ecx,dword ptr ds:[esi]
00454443     8A0C19  mov cl,byte ptr ds:[ecx+ebx]
00454446     2AD1    sub dl,cl
00454448     885418 >mov byte ptr ds:[eax+ebx-1],dl
0045444C     43      inc ebx
0045444D     4F      dec edi
0045444E   ^ 75 E0   jnz short CrackMe_.00454430
00454450     8BC6    mov eax,esi
00454452     E8 D1FE>call CrackMe_.00404328
00454457     8B16    mov edx,dword ptr ds:[esi]
00454459     8A542A >mov dl,byte ptr ds:[edx+ebp-1]
0045445D     8A4C24 >mov cl,byte ptr ss:[esp+7]
00454461     2AD1    sub dl,cl
00454463     885428 >mov byte ptr ds:[eax+ebp-1],dl
00454467     8BDD    mov ebx,ebp
00454469     83FB 02 cmp ebx,2
0045446C     7C 23   jl short CrackMe_.00454491
0045446E     8BC6    mov eax,esi
00454470     E8 B3FE>call CrackMe_.00404328
00454475     8B16    mov edx,dword ptr ds:[esi]
00454477     8A541A >mov dl,byte ptr ds:[edx+ebx-1]
0045447B     325424 >xor dl,byte ptr ss:[esp+4]
0045447F     8B0E    mov ecx,dword ptr ds:[esi]
00454481     8A4C19 >mov cl,byte ptr ds:[ecx+ebx-2]
00454485     2AD1    sub dl,cl
00454487     885418 >mov byte ptr ds:[eax+ebx-1],dl
0045448B     4B      dec ebx
0045448C     83FB 01 cmp ebx,1
0045448F   ^ 75 DD   jnz short CrackMe_.0045446E
00454491     8BC6    mov eax,esi
00454493     E8 90FE>call CrackMe_.00404328
00454498     8B16    mov edx,dword ptr ds:[esi]
0045449A     8A12    mov dl,byte ptr ds:[edx]
0045449C     8A4C24 >mov cl,byte ptr ss:[esp+6]
004544A0     2AD1    sub dl,cl
004544A2     8810    mov byte ptr ds:[eax],dl
004544A4     FF0C24  dec dword ptr ss:[esp]
004544A7     833C24 >cmp dword ptr ss:[esp],-1
004544AB   ^ 0F85 73>jnz CrackMe_.00454424
004544B1     59      pop ecx
004544B2     5A      pop edx
004544B3     5D      pop ebp
004544B4     5F      pop edi
004544B5     5E      pop esi
004544B6     5B      pop ebx
004544B7     C3      retn

------0045463E     E8 D9FB>call CrackMe_.0040421C-----

0040421C     53      push ebx
0040421D     56      push esi
0040421E     57      push edi
0040421F     89C6    mov esi,eax
00404221     89D7    mov edi,edx
00404223     39D0    cmp eax,edx
00404225     0F84 8F>je CrackMe_.004042BA
0040422B     85F6    test esi,esi
0040422D     74 68   je short CrackMe_.00404297
0040422F     85FF    test edi,edi
00404231     74 6B   je short CrackMe_.0040429E
00404233     8B46 FC mov eax,dword ptr ds:[esi-4]
00404236     8B57 FC mov edx,dword ptr ds:[edi-4]
00404239     29D0    sub eax,edx
0040423B     77 02   ja short CrackMe_.0040423F
0040423D     01C2    add edx,eax
0040423F     52      push edx
00404240     C1EA 02 shr edx,2
00404243     74 26   je short CrackMe_.0040426B
00404245     8B0E    mov ecx,dword ptr ds:[esi]
00404247     8B1F    mov ebx,dword ptr ds:[edi]
00404249     39D9    cmp ecx,ebx
0040424B     75 58   jnz short CrackMe_.004042A5
0040424D     4A      dec edx
0040424E     74 15   je short CrackMe_.00404265
00404250     8B4E 04 mov ecx,dword ptr ds:[esi+4]
00404253     8B5F 04 mov ebx,dword ptr ds:[edi+4]
00404256     39D9    cmp ecx,ebx
00404258     75 4B   jnz short CrackMe_.004042A5
0040425A     83C6 08 add esi,8
0040425D     83C7 08 add edi,8
00404260     4A      dec edx
00404261   ^ 75 E2   jnz short CrackMe_.00404245
00404263     EB 06   jmp short CrackMe_.0040426B
00404265     83C6 04 add esi,4
00404268     83C7 04 add edi,4
0040426B     5A      pop edx
0040426C     83E2 03 and edx,3
0040426F     74 22   je short CrackMe_.00404293
00404271     8B0E    mov ecx,dword ptr ds:[esi]
00404273     8B1F    mov ebx,dword ptr ds:[edi]
00404275     38D9    cmp cl,bl
00404277     75 41   jnz short CrackMe_.004042BA
00404279     4A      dec edx
0040427A     74 17   je short CrackMe_.00404293
0040427C     38FD    cmp ch,bh
0040427E     75 3A   jnz short CrackMe_.004042BA
00404280     4A      dec edx
00404281     74 10   je short CrackMe_.00404293
00404283     81E3 00>and ebx,0FF0000
00404289     81E1 00>and ecx,0FF0000
0040428F     39D9    cmp ecx,ebx
00404291     75 27   jnz short CrackMe_.004042BA
00404293     01C0    add eax,eax
00404295     EB 23   jmp short CrackMe_.004042BA
00404297     8B57 FC mov edx,dword ptr ds:[edi-4]
0040429A     29D0    sub eax,edx
0040429C     EB 1C   jmp short CrackMe_.004042BA
0040429E     8B46 FC mov eax,dword ptr ds:[esi-4]
004042A1     29D0    sub eax,edx
004042A3     EB 15   jmp short CrackMe_.004042BA
004042A5     5A      pop edx
004042A6     38D9    cmp cl,bl
004042A8     75 10   jnz short CrackMe_.004042BA
004042AA     38FD    cmp ch,bh
004042AC     75 0C   jnz short CrackMe_.004042BA
004042AE     C1E9 10 shr ecx,10
004042B1     C1EB 10 shr ebx,10
004042B4     38D9    cmp cl,bl
004042B6     75 02   jnz short CrackMe_.004042BA
004042B8     38FD    cmp ch,bh
004042BA     5F      pop edi
004042BB     5E      pop esi
004042BC     5B      pop ebx
004042BD     C3      retn
雪    币: 221
活跃值: (137)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
xsy3660 4 2005-5-21 21:01
9
0
你那循环可多,但没难度。不过要得到注册码也不易呀。
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
baby2008 28 2005-5-21 21:08
10
0
嘿嘿

Function MakeKey(A: String): Integer;
Var
  I: Integer;
  S: String;
Begin
  Result := 0; S := ReverseString(A);
  For I := 1 To Length(A) Do Result := Result + Ord(A[I]) * Ord(S[I]) * I;
End;
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
baby2008 28 2005-5-21 21:48
11
0
最初由 xsy3660 发布
你那循环可多,但没难度。不过要得到注册码也不易呀。


循环没什么难度,但应该看了头晕吧? 要写注册机先看懂验证,还要写反函数哦 ,有空加强反调试+防爆破再放上一个
雪    币: 221
活跃值: (137)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
xsy3660 4 2005-5-21 22:45
12
0
循环后放的地方没有变,所以看二次就清楚了。
等你的下一个crackme。
雪    币: 221
活跃值: (137)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
xsy3660 4 2005-5-21 22:52
13
0
最初由 baby2008 发布
嘿嘿

Function MakeKey(A: String): Integer;
Var
I: Integer;
S: String;
Begin
Result := 0; S := ReverseString(A);
For I := 1 To Length(A) Do Result := Result + Ord(A) * Ord(S) * I;
End;


只是下面这一部分的吧
0045457A     8B4D FC mov ecx,dword ptr ss:[ebp-4]         ; 机器码
0045457D     0FB64C0>movzx ecx,byte ptr ds:[ecx+eax-1]    ; 取机器码的第i位
00454582     8B75 F8 mov esi,dword ptr ss:[ebp-8]         ; 机器码倒置后的字串
00454585     0FB6740>movzx esi,byte ptr ds:[esi+eax-1]    ; 取机器码的倒数第i位
0045458A     0FAFCE  imul ecx,esi                         ; 相乘
0045458D     0FAFC8  imul ecx,eax                         ; 乘以循环次数
00454590     03D9    add ebx,ecx
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
baby2008 28 2005-5-21 23:06
14
0
你认为哪里需要改进?(就算法而言)
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
KuNgBiM 66 2005-5-22 04:14
15
0
最初由 baby2008 发布
你认为哪里需要改进?(就算法而言)


(就算法而言)
加点BT的算法。。。。个人自制算法+变形MD5+变形Base64+变形Twofish+变形Blowfish+...+CRC32+CRC16 做成一个“变形金刚”

(就程序而言)
加强自校验保护+Anti-Debug功能

(就界面而言)
改改风格!!~~
看看 ECLiPSE Official Trial Crackme 2005
雪    币: 372
活跃值: (31)
能力值: ( LV12,RANK:410 )
在线值:
发帖
回帖
粉丝
vxin 10 2005-5-22 13:25
16
0
(就界面而言)
改改风格!!~~
看看 ECLiPSE Official Trial Crackme 2005

>>>汗一个~~~
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
baby2008 28 2005-5-22 15:55
17
0
最初由 KuNgBiM 发布


(就算法而言)
加点BT的算法。。。。个人自制算法+变形MD5+变形Base64+变形Twofish+变形Blowfish+...+CRC32+CRC16 做成一个“变形金刚”

........


要改的真多
雪    币: 250
活跃值: (103)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
ah007 2 2005-5-23 17:44
18
0
支持,顶一下!
雪    币: 132
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolskyboy 2005-5-24 18:44
19
0
现在越来越难了
雪    币: 207
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
sunray 2005-5-24 19:21
20
0
有效机器码:Baby2008
注册码:6D83A0D4A1B692AE

如果在 注册码:6D83A0D4A1B692AE 后任意再添加一个字符,照样可以注册成功
不知道是不是BUG?

雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
baby2008 28 2005-5-24 20:13
21
0
??怎么会这样,马上去看看源代码
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
baby2008 28 2005-5-25 10:20
22
0
最初由 sunray 发布
有效机器码:Baby2008
注册码:6D83A0D4A1B692AE

如果在 注册码:6D83A0D4A1B692AE 后任意再添加一个字符,照样可以注册成功
不知道是不是BUG?
........


是Bug 原因  SetLength(Result, N Div 2); //加一个任意一个字符省掉了,加两个字符可不行哦,需要修改一下,谢谢你。
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
KuNgBiM 66 2005-5-26 00:01
23
0
最初由 baby2008 发布



是Bug 原因 SetLength(Result, N Div 2); //加一个任意一个字符省掉了,加两个字符可不行哦,需要修改一下,谢谢你。


BUG真多哦~~~
雪    币: 442
活跃值: (1216)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
baby2008 28 2005-5-26 09:01
24
0
BUG真多哦~~,帮忙指点一下
雪    币: 372
活跃值: (31)
能力值: ( LV12,RANK:410 )
在线值:
发帖
回帖
粉丝
vxin 10 2005-5-26 14:08
25
0
我是新手~~~

游客
登录 | 注册 方可回帖
返回