飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 1831|回复: 1

申请加入PYG破文三

[复制链接]
  • TA的每日心情
    无聊
    2020-4-10 17:02
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2005-8-19 11:10:18 | 显示全部楼层 |阅读模式
    【原创】一个早期BCG的crackme 简单算法分析

         日期:2005年8月17日   破解人:冷血书生[OCN][CZG][PCG][CCU]
    ———————————————————————————————————————————


    【软件名称】:Crackme   软件版本:
    【软件大小】: 193 KB
    【下载地址】:本地下载
    【软件简介】:
    【软件限制】:
    【破解声明】:初学Crack,只是感兴趣,没有其它目的。失误之处敬请诸位大侠赐教!
    【破解工具】:PEID,OD

    ———————————————————————————————————————————
     
    【破解过程】:

       查壳,检测到Borland C++!我喜欢!马上OD载入!找到错误提示,在00401000下断:



    00401000    55             push ebp                                        ; 下断
    00401001    8BEC           mov ebp,esp
    00401003    81C4 2CFBFFFF  add esp,-4D4
    00401009    53             push ebx
    0040100A    56             push esi
    0040100B    57             push edi
    0040100C    8B5D 08        mov ebx,dword ptr ss:[ebp+8]
    0040100F    BE 4AB14000    mov esi,crackme.0040B14A                        ; ASCII "iNNeR's

    CrACKiNG GrOUp)"
    00401014    8DBD F0FCFFFF  lea edi,dword ptr ss:[ebp-310]
    0040101A    B9 4B000000    mov ecx,4B                                    
    0040101F    F3:A5          rep movs dword ptr es:[edi],dword ptr ds:[esi]
    00401021    BE 76B24000    mov esi,crackme.0040B276
    00401026    8DBD C4FBFFFF  lea edi,dword ptr ss:[ebp-43C]
    0040102C    B9 4B000000    mov ecx,4B                                      
    00401031    F3:A5          rep movs dword ptr es:[edi],dword ptr ds:[esi]
    00401033    BE A2B34000    mov esi,crackme.0040B3A2
    00401038    8DBD 90FBFFFF  lea edi,dword ptr ss:[ebp-470]
    0040103E    B9 0C000000    mov ecx,0C                                    
    00401043    F3:A5          rep movs dword ptr es:[edi],dword ptr ds:[esi]
    00401045    66:A5          movs word ptr es:[edi],word ptr ds:[esi]
    00401047    BE D4B34000    mov esi,crackme.0040B3D4
    0040104C    8DBD 2CFBFFFF  lea edi,dword ptr ss:[ebp-4D4]
    00401052    B9 19000000    mov ecx,19                                    
    00401057    F3:A5          rep movs dword ptr es:[edi],dword ptr ds:[esi]
    00401059    33C0           xor eax,eax                                     ; EAX清0
    0040105B    8945 C8        mov dword ptr ss:[ebp-38],eax
    0040105E    33D2           xor edx,edx                                     ; EDX清0
    00401060    8955 C4        mov dword ptr ss:[ebp-3C],edx
    00401063    33C9           xor ecx,ecx                                     ; ECX清0
    00401065    894D C0        mov dword ptr ss:[ebp-40],ecx
    00401068    C745 BC CE05F4>mov dword ptr ss:[ebp-44],3EF405CE
    0040106F    33C0           xor eax,eax                                     ; EAX清0
    00401071    8945 B8        mov dword ptr ss:[ebp-48],eax
    00401074    C745 B4 00007A>mov dword ptr ss:[ebp-4C],447A0000
    0040107B    33D2           xor edx,edx
    0040107D    8955 B0        mov dword ptr ss:[ebp-50],edx
    00401080    33C9           xor ecx,ecx
    00401082    894D AC        mov dword ptr ss:[ebp-54],ecx
    00401085    6A 66          push 66
    00401087    53             push ebx
    00401088    E8 159C0000    call <jmp.&USER32.GetDlgItem>
    0040108D    6A 64          push 64
    0040108F    8D95 48FFFFFF  lea edx,dword ptr ss:[ebp-B8]
    00401095    52             push edx
    00401096    50             push eax
    00401097    E8 129C0000    call <jmp.&USER32.GetWindowTextA>
    0040109C    6A 68          push 68
    0040109E    53             push ebx
    0040109F    E8 FE9B0000    call <jmp.&USER32.GetDlgItem>
    004010A4    6A 64          push 64
    004010A6    8D8D E4FEFFFF  lea ecx,dword ptr ss:[ebp-11C]
    004010AC    51             push ecx
    004010AD    50             push eax
    004010AE    E8 FB9B0000    call <jmp.&USER32.GetWindowTextA>
    004010B3    6A 67          push 67
    004010B5    53             push ebx
    004010B6    E8 E79B0000    call <jmp.&USER32.GetDlgItem>
    004010BB    8BF0           mov esi,eax
    004010BD    8D85 48FFFFFF  lea eax,dword ptr ss:[ebp-B8]
    004010C3    50             push eax                                        ; 用户名入栈
    004010C4    E8 67050000    call crackme.00401630
    004010C9    59             pop ecx
    004010CA    8945 D8        mov dword ptr ss:[ebp-28],eax
    004010CD    8D95 E4FEFFFF  lea edx,dword ptr ss:[ebp-11C]
    004010D3    52             push edx                                        ; 假码入栈
    004010D4    E8 57050000    call crackme.00401630
    004010D9    59             pop ecx
    004010DA    68 EAB04000    push crackme.0040B0EA
    004010DF    E8 4C050000    call crackme.00401630
    004010E4    59             pop ecx
    004010E5    68 0EB14000    push crackme.0040B10E
    004010EA    E8 41050000    call crackme.00401630
    004010EF    59             pop ecx
    004010F0    837D D8 03     cmp dword ptr ss:[ebp-28],3                     ; 用户名长度与3比


    004010F4    7E 7B          jle short crackme.00401171                      ; 小于或等于3就跳
    004010F6    33C9           xor ecx,ecx
    004010F8    33D2           xor edx,edx
    004010FA    33DB           xor ebx,ebx                                     ; EBX=00320406
    004010FC    33C0           xor eax,eax                                     ; EAX清0
    004010FE    837D D8 32     cmp dword ptr ss:[ebp-28],32                    ; 用户名长度与32

    比较
    00401102    7D 69          jge short crackme.0040116D                      ; 大于就跳
    00401104    0FBE840D 48FFF>movsx eax,byte ptr ss:[ebp+ecx-B8]              ; 依次取用户名

    ASCII值并送EAX
    0040110C    41             inc ecx                                         ; ECX=ECX+1
    0040110D    33C1           xor eax,ecx                                     ; EAX与ECX异或
    0040110F    03D8           add ebx,eax                                     ; EBX=EBX+EAX
    00401111    3B4D D8        cmp ecx,dword ptr ss:[ebp-28]                   ; ECX与00000007比


    00401114  ^ 75 EE          jnz short crackme.00401104                      ; 循环计算
    00401116    69C0 56030000  imul eax,eax,356                                ; EAX=EAX*356
    0040111C    C1E3 08        shl ebx,8                                       ; EBX乘以2的8次方

    0040111F    C1E8 08        shr eax,8                                       ; EAX除以2的8次方

    00401122    90             nop
    00401123    90             nop
    00401124    03C3           add eax,ebx                                     ; EAX=EAX+EBX
    00401126    8945 C8        mov dword ptr ss:[ebp-38],eax
    00401129    FF75 C8        push dword ptr ss:[ebp-38]
    0040112C    68 38B44000    push crackme.0040B438                           ; ASCII "%lX"
    00401131    8D8D 80FEFFFF  lea ecx,dword ptr ss:[ebp-180]
    00401137    51             push ecx
    00401138    E8 873D0000    call crackme.00404EC4
    0040113D    83C4 0C        add esp,0C
    00401140    8D85 80FEFFFF  lea eax,dword ptr ss:[ebp-180]
    00401146    50             push eax
    00401147    8D95 E4FEFFFF  lea edx,dword ptr ss:[ebp-11C]
    0040114D    52             push edx
    0040114E    E8 339C0000    call <jmp.&KERNEL32.lstrcmpA>
    00401153    85C0           test eax,eax
    00401155    75 0D          jnz short crackme.00401164




    【算法总结】


    (1)用户名长度在3---50之间,小于3或者大于50就会出错啦!
    (2)用户名第一位ASCII值 XOR 1 +0 =SN1
    用户名第二位ASCII值 XOR 2 +SN1 =SN2
    ……
    用户名最后一位ASCII值 XOR 用户名总长度 +SN(上面一个SN)= A
    (3) 用户名最后一位ASCII值 XOR 用户名总长度 * 356= B
    (4)A乘以2的8次方 = C
    (5)B除以2的8次方 = D
    (6) C + D =注册码


    用户名:lengxue
    注册码:2F746

    ———————————————————————————————————————————

    【Crack_总结】:

       初学算法,不足之处,还请各位大侠指点!

    [ Last edited by 冷血书生 on 2005-8-19 at 11:15 AM ]

    本帖子中包含更多资源

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

    x
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-3-30 17:42
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2005-8-19 18:51:07 | 显示全部楼层
    不错哦!^_^!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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