飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3211|回复: 3

一个简单的crackme

[复制链接]

该用户从未签到

发表于 2006-3-12 16:48:50 | 显示全部楼层 |阅读模式
目标软件:crackmeno3_1
破解方式:寻找注册码
难易等级:初
相关工具:peid ollydbg dede
过程:首先查壳无,并且是用Borland Delphi 6.0 - 7.0语言编写,输入用户名:tong  注册码:54321 点验证,无信息。看来只有正确的注册码才会提示。用OD载入,用消息断点无法拦截,DEDE载入,查得验证信息地址,并在OD中拦截成功。如下:


00459938  /.  55            PUSH EBP
00459939  |.  8BEC          MOV EBP,ESP
0045993B  |.  33C9          XOR ECX,ECX
0045993D  |.  51            PUSH ECX
0045993E  |.  51            PUSH ECX
0045993F  |.  51            PUSH ECX
00459940  |.  51            PUSH ECX
00459941  |.  51            PUSH ECX
00459942  |.  51            PUSH ECX
00459943  |.  51            PUSH ECX
00459944  |.  53            PUSH EBX
00459945  |.  56            PUSH ESI
00459946  |.  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX
00459949  |.  33C0          XOR EAX,EAX
0045994B  |.  55            PUSH EBP
0045994C  |.  68 8E9A4500   PUSH CrackMeN.00459A8E
00459951  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
00459954  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
00459957  |.  8D55 EC       LEA EDX,DWORD PTR SS:[EBP-14]
0045995A  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0045995D  |.  8B80 00030000 MOV EAX,DWORD PTR DS:[EAX+300]
00459963  |.  E8 FCEFFDFF   CALL CrackMeN.00438964
00459968  |.  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]            ;  注册名
0045996B  |.  E8 FCABFAFF   CALL CrackMeN.0040456C                   ;  注册名位数(eax)
00459970  |.  8BF0          MOV ESI,EAX
00459972  |.  33DB          XOR EBX,EBX
00459974  |.  8BC6          MOV EAX,ESI
00459976  |.  85C0          TEST EAX,EAX
00459978  |.  7E 21         JLE SHORT CrackMeN.0045999B
0045997A  |.  BA 01000000   MOV EDX,1                                ;  第一次计算
0045997F  |>  69CE 8E91C621 /IMUL ECX,ESI,21C6918E                   ;  ecx=esi*21c6918e
00459985  |.  03D9          |ADD EBX,ECX                             ;  ebx=ebx+ecx(初始ebx=0)
00459987  |.  8B4D EC       |MOV ECX,DWORD PTR SS:[EBP-14]
0045998A  |.  0FB64C11 FF   |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1]       ;  依次取用户名
0045998F  |.  69C9 CE020000 |IMUL ECX,ECX,2CE                        ;  ecx=ecx*2ce
00459995  |.  03D9          |ADD EBX,ECX                             ;  ebx=ebx+ecx
00459997  |.  42            |INC EDX                                 ;  edx=edx+1
00459998  |.  48            |DEC EAX
00459999  |.^ 75 E4         \JNZ SHORT CrackMeN.0045997F             ;  是否为0
0045999B  |>  8BC3          MOV EAX,EBX
0045999D  |.  99            CDQ                                       先扩展判断eax符号位为0,edx=00000000,否则edx =ffffffff
0045999E  |.  33C2          XOR EAX,EDX                                eax=eax^edx
004599A0  |.  2BC2          SUB EAX,EDX                                eax=eax-edx
004599A2  |.  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]
004599A5  |.  E8 9AEBFAFF   CALL CrackMeN.00408544                   ;  计算第一串
004599AA  |.  8BC6          MOV EAX,ESI
004599AC  |.  85C0          TEST EAX,EAX
004599AE  |.  7E 21         JLE SHORT CrackMeN.004599D1
004599B0  |.  BA 01000000   MOV EDX,1
004599B5  |>  8B4D EC       /MOV ECX,DWORD PTR SS:[EBP-14]           ;  进行第二次转换
004599B8  |.  0FB64C11 FF   |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1]       ;  又依次取用户名
004599BD  |.  69C9 8E91C621 |IMUL ECX,ECX,21C6918E                   ;  ecx=ecx*21c6918e
004599C3  |.  69C9 BC070000 |IMUL ECX,ECX,7BC                        ;  ecx=ecx*7bc
004599C9  |.  03D9          |ADD EBX,ECX                             ;  ebx=ebx+ecx
004599CB  |.  2BDE          |SUB EBX,ESI                             ;  ebx=ebx-esi(esi为用户名位数)
004599CD  |.  42            |INC EDX                                 ;  循环次数
004599CE  |.  48            |DEC EAX
004599CF  |.^ 75 E4         \JNZ SHORT CrackMeN.004599B5             ;  为0跳
004599D1  |>  8BC3          MOV EAX,EBX
004599D3  |.  99            CDQ                                        先扩展判断eax符号位为0,edx=00000000,否则edx =ffffffff
004599D4  |.  33C2          XOR EAX,EDX                              ;  eax=eax^edx
004599D6  |.  2BC2          SUB EAX,EDX                              ;  eax=eax-edx
004599D8  |.  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
004599DB  |.  E8 64EBFAFF   CALL CrackMeN.00408544                      计算第二串
004599E0  |.  8BC6          MOV EAX,ESI
004599E2  |.  85C0          TEST EAX,EAX
004599E4  |.  7E 1E         JLE SHORT CrackMeN.00459A04
004599E6  |.  BA 01000000   MOV EDX,1                                ;  第三次进行运算
004599EB  |>  8B4D EC       /MOV ECX,DWORD PTR SS:[EBP-14]
004599EE  |.  0FB64C11 FF   |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1]
004599F3  |.  0FAFCE        |IMUL ECX,ESI                            ;  ecx=ecx*esi
004599F6  |.  69C9 C6040000 |IMUL ECX,ECX,4C6                        ;  ecx=ecx*4c6
004599FC  |.  03D9          |ADD EBX,ECX                             ;  ebx=ebx+ecx
004599FE  |.  03DE          |ADD EBX,ESI                             ;  ebx=ebx+esi
00459A00  |.  42            |INC EDX                                 ;  循环次数
00459A01  |.  48            |DEC EAX
00459A02  |.^ 75 E7         \JNZ SHORT CrackMeN.004599EB             ;  为0跳
00459A04  |>  81C3 8E91C621 ADD EBX,21C6918E                         ;  ebx=ebx+21c6918e
00459A0A  |.  8BC3          MOV EAX,EBX                              ;  eax=ebx
00459A0C  |.  99            CDQ                                           先扩展判断eax符号位为0,edx=00000000,否则edx =ffffffff
00459A0D  |.  33C2          XOR EAX,EDX                              ;  eax=eax^edx
00459A0F  |.  2BC2          SUB EAX,EDX                                  eax=eax-edx
00459A11  |.  8D55 F0       LEA EDX,DWORD PTR SS:[EBP-10]
00459A14  |.  E8 2BEBFAFF   CALL CrackMeN.00408544                      计算第三串
00459A19  |.  8D55 E8       LEA EDX,DWORD PTR SS:[EBP-18]
00459A1C  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]

(公用部分)
00408E92  |$  B9 0A000000   MOV ECX,0A                               ;  ecx=0a
00408E97  |>  8D75 9F       LEA ESI,DWORD PTR SS:[EBP-61]
00408E9A  |>  31D2          /XOR EDX,EDX                             ;  以下计算第一字串
00408E9C  |.  F7F1          |DIV ECX                                 ;  eax=eax/ecx 余数在 edx中
00408E9E  |.  80C2 30       |ADD DL,30
00408EA1  |.  80FA 3A       |CMP DL,3A
00408EA4  |.  72 03         |JB SHORT CrackMeN.00408EA9
00408EA6  |.  80C2 07       |ADD DL,7
00408EA9  |>  4E            |DEC ESI
00408EAA  |.  8816          |MOV BYTE PTR DS:[ESI],DL
00408EAC  |.  09C0          |OR EAX,EAX                                 
00408EAE  |.^ 75 EA         \JNZ SHORT CrackMeN.00408E9A             eax为0则结束
00408EB0  |.  8D4D 9F       LEA ECX,DWORD PTR SS:[EBP-61]
00408EB3  |.  29F1          SUB ECX,ESI
00408EB5  |.  8B55 DC       MOV EDX,DWORD PTR SS:[EBP-24]
00408EB8  |.  83FA 10       CMP EDX,10
00408EBB  |.  76 01         JBE SHORT CrackMeN.00408EBE
00408EBD  |.  C3            RETN

算法:1、用注册名计算出三个串,(注意:每一串的计算都是以前一串和用户名为基础计算出的)

      2、以前三个串为基础,调用(公用部分)计算。所得到的三串数字(每串9位)用“-”连接起来即为注册码。

如:注册名:tong
    注册码:476965616-434456928-134355326

由于有是登录网站特别慢,附件还有大小限制,所以没传上来,这是今天起早传的。

[ 本帖最后由 hongxin2005 于 2006-3-13 21:29 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入我们

x
PYG19周年生日快乐!
  • TA的每日心情
    难过
    7 天前
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2006-3-13 07:36:10 | 显示全部楼层
    将 CrackMe 打包上来 就给你来个 精华标志
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-5-6 16:27
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2006-4-21 18:52:07 | 显示全部楼层
    原帖由 飘云 于 2006-3-13 07:36 发表
    将 CrackMe 打包上来 就给你来个 精华标志


    老大。。。他放上来了。。。:victory:
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-5-3 15:21:54 | 显示全部楼层
    学习中......算法好难啊!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表