飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

楼主: liuyun213

[原创] 新学VC,做了个简单的Cracme(更新)

[复制链接]

该用户从未签到

发表于 2007-12-17 13:49:12 | 显示全部楼层
没能追出码,/:010
PYG19周年生日快乐!

该用户从未签到

发表于 2007-12-20 11:14:44 | 显示全部楼层
(PYG)整个爆破的上来

本帖子中包含更多资源

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

x
PYG19周年生日快乐!
  • TA的每日心情

    2019-6-9 15:12
  • 签到天数: 35 天

    [LV.5]常住居民I

    发表于 2007-12-20 12:17:19 | 显示全部楼层
    哈哈,那就下来玩一下!/:001
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-12-22 09:38:13 | 显示全部楼层
    追出PYG注册码
    用户名:swzyzl0
    注册码:C6A4D2

    本帖子中包含更多资源

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

    x
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-12-22 18:12:45 | 显示全部楼层

    分析pyg程序算法

    调试工具:Ollydbg 1.10
    输入用户名:swzyzl0
    密码:6A5432
    主程序

    断点:
    00401624   .  C64424 28 00  MOV BYTE PTR SS:[ESP+28],0               ; |
    00401629   .  E8 62000000   CALL pyg.00401690                        ; \pyg.00401690(关键,进入)
    0040162E   .  84C0          TEST AL,AL
    00401630      74 19         JNE SHORT pyg.0040164B   ;跳到错误对话框(爆破点)
    00401632   .  6A 69         PUSH 69                                  ; /Arg1 = 00000069
    00401634   .  8D4C24 10     LEA ECX,DWORD PTR SS:[ESP+10]            ; |
    00401638   .  E8 71850100   CALL pyg.00419BAE      ; \pyg.00419BAE(弹出正确对话框)

    CALL pyg.00401690

    00401690  /$  6A FF         PUSH -1
    00401692  |.  68 00054200   PUSH pyg.00420500                        ;  SE 处理程序安装
    00401697  |.  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
    0040169D  |.  50            PUSH EAX
    0040169E  |.  64:8925 00000>MOV DWORD PTR FS:[0],ESP
    004016A5  |.  83EC 08       SUB ESP,8
    004016A8  |.  53            PUSH EBX
    004016A9  |.  56            PUSH ESI
    004016AA  |.  57            PUSH EDI
    004016AB  |.  8BF9          MOV EDI,ECX
    004016AD  |.  8B4424 24     MOV EAX,DWORD PTR SS:[ESP+24]            ;  用户名移到EAX
    004016B1  |.  66:8B4F 68    MOV CX,WORD PTR DS:[EDI+68]   ;0050
    004016B5  |.  66:8B57 6A    MOV DX,WORD PTR DS:[EDI+6A]  ;0059
    004016B9  |.  66:894C24 0C  MOV WORD PTR SS:[ESP+C],CX
    004016BE  |.  8B70 F8       MOV ESI,DWORD PTR DS:[EAX-8]             ;  用户名长度
    004016C1  |.  66:8B47 6C    MOV AX,WORD PTR DS:[EDI+6C]  ;0047
    004016C5  |.  33C9          XOR ECX,ECX                              ;  ECX清零
    004016C7  |.  C74424 1C 010>MOV DWORD PTR SS:[ESP+1C],1
    004016CF  |.  85F6          TEST ESI,ESI                           ;  测试用户名长度是否为零
    004016D1  |.  66:895424 0E  MOV WORD PTR SS:[ESP+E],DX
    004016D6  |.  66:894424 10  MOV WORD PTR SS:[ESP+10],AX
    004016DB  |.  7E 23         JLE SHORT pyg.00401700
    004016DD  |.  55            PUSH EBP
    ;以下为处理用户名的循环
    004016DE  |>  8B5424 28     /MOV EDX,DWORD PTR SS:[ESP+28]           ;  用户名移到EDX
    004016E2  |.  8BC1          |MOV EAX,ECX    ;执行循环次数入EAX中
    004016E4  |.  BD 03000000   |MOV EBP,3
    004016E9  |.  8A1C11        |MOV BL,BYTE PTR DS:[ECX+EDX]     ;  取用户名第ECX位到BL中
    004016EC  |.  99            |CDQ       ;EAX的内容符号扩展到EDX中
    004016ED  |.  F7FD          |IDIV EBP   ;(EDX、EAX)/EBP  商入EAX,余数入EDX
    004016EF  |.  8D4454 10     |LEA EAX,DWORD PTR SS:[ESP+EDX*2+10]   ;0012F8B4(值为:00590050)
    004016F3  |.  66:0FBED3     |MOVSX DX,BL
    004016F7  |.  66:0110       |ADD WORD PTR DS:[EAX],DX   ;将用户名第ECX位用户名ASCII码值与 WORD PTR DS:[EAX]处值相加
    004016FA  |.  41            |INC ECX       ;循环次数加1
    004016FB  |.  3BCE          |CMP ECX,ESI                             ;  用户名处理完了吗?
    004016FD  |.^ 7C DF         \JL SHORT pyg.004016DE       ;没有处理完跳到00401DE处
    ;以上对用户名进行变码,存在WORD PTR DS:[EAX]处,以待备用
    ;对用户名的变码过程就是:用户名第1、4、7…………位的ASCII值相加,再加上50,值存入地址0012F8B4中;用户名第2、5……位的ASCII值相加,再加上59,值存入地址0012F8B6中;用户名3、6……位的ASCII值相加,再加上47,值存入地址0012F8B8中。
    004016FF  |.  5D            POP EBP
    00401700  |>  8B4424 28     MOV EAX,DWORD PTR SS:[ESP+28]            ;  密码移EAX中
    00401704  |.  8378 F8 06    CMP DWORD PTR DS:[EAX-8],6               ;  密码长度是否等于6
    00401708  |.  74 35         JE SHORT pyg.0040173F
    0040170A  |>  8D4C24 24     LEA ECX,DWORD PTR SS:[ESP+24]            ;  用户名地址入ECX
    0040170E  |.  C64424 1C 00  MOV BYTE PTR SS:[ESP+1C],0
    00401713  |.  E8 4E540100   CALL pyg.00416B66
    00401718  |.  8D4C24 28     LEA ECX,DWORD PTR SS:[ESP+28]            ;  密码地地址入ECX
    0040171C  |.  C74424 1C FFF>MOV DWORD PTR SS:[ESP+1C],-1
    00401724  |.  E8 3D540100   CALL pyg.00416B66
    00401729  |.  5F            POP EDI
    0040172A  |.  5E            POP ESI
    0040172B  |.  32C0          XOR AL,AL    ;AL清零,这也是在主程序下判断的依据
    0040172D  |.  5B            POP EBX
    0040172E  |.  8B4C24 08     MOV ECX,DWORD PTR SS:[ESP+8]
    00401732  |.  64:890D 00000>MOV DWORD PTR FS:[0],ECX
    00401739  |.  83C4 14       ADD ESP,14
    0040173C  |.  C2 0800       RETN 8
    0040173F  |>  33F6          XOR ESI,ESI                              ;  ESI清零
    00401741  |.  8D5C24 0C     LEA EBX,DWORD PTR SS:[ESP+C]  ;地址:0012F8B4(此地址对应内容来自用户名变法)
    00401745  |>  56            /PUSH ESI
    00401746  |.  8BCF          |MOV ECX,EDI
    00401748  |.  E8 63000000   |CALL pyg.004017B0   ;此对用户输入的密码进行变换,值返回在EAX(关键,跟入)
    0040174D  |.  0FBF0B        |MOVSX ECX,WORD PTR DS:[EBX]  ;将0012F8B4处的内容移到ECX
    00401750  |.  81E1 FF000080 |AND ECX,800000FF    ;保留符号位和后8位
    00401756  |.  79 08         |JNS SHORT pyg.00401760  ;结果为正跳
    00401758  |.  49            |DEC ECX
    00401759  |.  81C9 00FFFFFF |OR ECX,FFFFFF00
    0040175F  |.  41            |INC ECX
    00401760  |>  0FBFD0        |MOVSX EDX,AX ;将用户输入的密码变换完后的值移到EDX
    00401763  |.  3BCA          |CMP ECX,EDX   ;将用“用户名”变换后的值与用户输入密码变换后的值比较,即(第一次比较:用户名1、4、7…位加50值与用户输入的密码前两位变换后的值比较)
    00401765  |.^ 75 A3         |JNZ SHORT pyg.0040170A  ;如果第一次比较就错,不再进行比较,跳走,继而返回
    00401767  |.  46            |INC ESI
    00401768  |.  83C3 02       |ADD EBX,2   ;EBX加2,以使指针指向下一密码地址处
    0040176B  |.  83FE 03       |CMP ESI,3   ;比较3次
    0040176E  |.^ 7C D5         \JL SHORT pyg.00401745 ;如果没有比较完接着跳到00401745处
    00401770  |.  8D4C24 24     LEA ECX,DWORD PTR SS:[ESP+24]
    00401774  |.  C64424 1C 00  MOV BYTE PTR SS:[ESP+1C],0
    00401779  |.  E8 E8530100   CALL pyg.00416B66
    0040177E  |.  8D4C24 28     LEA ECX,DWORD PTR SS:[ESP+28]
    00401782  |.  C74424 1C FFF>MOV DWORD PTR SS:[ESP+1C],-1
    0040178A  |.  E8 D7530100   CALL pyg.00416B66
    0040178F  |.  8B4C24 14     MOV ECX,DWORD PTR SS:[ESP+14]
    00401793  |.  5F            POP EDI
    00401794  |.  5E            POP ESI
    00401795  |.  B0 01         MOV AL,1
    00401797  |.  5B            POP EBX
    00401798  |.  64:890D 00000>MOV DWORD PTR FS:[0],ECX
    0040179F  |.  83C4 14       ADD ESP,14
    004017A2  \.  C2 0800       RETN 8

    |CALL pyg.004017B0

    004017B0  /$  8B41 60       MOV EAX,DWORD PTR DS:[ECX+60]        ;  密码移到EAX
    004017B3  |.  8B4C24 04     MOV ECX,DWORD PTR SS:[ESP+4]
    004017B7  |.  8D0448        LEA EAX,DWORD PTR DS:[EAX+ECX*2]
    004017BA  |.  0FBE08        MOVSX ECX,BYTE PTR DS:[EAX]    ;  密码第ECX*2位扩展到ECX
    004017BD  |.  0FBE40 01     MOVSX EAX,BYTE PTR DS:[EAX+1]     ;  密码第ECX*2+1位到EAX
    004017C1  |.  83F9 30       CMP ECX,30
    004017C4  |.  7C 0A         JL SHORT pyg.004017D0  ;小于数字0则跳
    004017C6  |.  83F9 39       CMP ECX,39
    004017C9  |.  7F 05         JG SHORT pyg.004017D0  ;大于数学9则跳
    004017CB  |.  83E9 30       SUB ECX,30             ;如果是数字0-9,则ASCII码值减30
    004017CE  |.  EB 0D         JMP SHORT pyg.004017DD
    004017D0  |>  83F9 41       CMP ECX,41
    004017D3  |.  7C 32         JL SHORT pyg.00401807   ;小于A则跳
    004017D5  |.  83F9 5A       CMP ECX,5A
    004017D8  |.  7F 2D         JG SHORT pyg.00401807  ;大于Z则跳
    004017DA  |.  83E9 37       SUB ECX,37             ;如果是A—Z则ASCII值减37
    004017DD  |>  83F8 30       CMP EAX,30            ;比较密码第ECX*2+1位与数字0
    004017E0  |.  7C 10         JL SHORT pyg.004017F2
    004017E2  |.  83F8 39       CMP EAX,39
    004017E5  |.  7F 0B         JG SHORT pyg.004017F2
    004017E7  |.  83E8 30       SUB EAX,30
    004017EA  |.  C1E0 04       SHL EAX,4             ;逻辑左移4位
    004017ED  |.  0BC1          OR EAX,ECX          ;密码第ECX*2+1位或ECX*2位值
    004017EF  |.  C2 0400       RETN 4
    004017F2  |>  83F8 41       CMP EAX,41
    004017F5  |.  7C 10         JL SHORT pyg.00401807
    004017F7  |.  83F8 5A       CMP EAX,5A
    004017FA  |.  7F 0B         JG SHORT pyg.00401807
    004017FC  |.  83E8 37       SUB EAX,37
    004017FF  |.  C1E0 04       SHL EAX,4
    00401802  |.  0BC1          OR EAX,ECX
    00401804  |.  C2 0400       RETN 4
    00401807  |>  66:33C0       XOR AX,AX
    0040180A  \.  C2 0400       RETN 4
    此函数功能:1、保证用户输入的密码为数字0—9,A—Z
                2、将用户输入的密码值1、2位互换,3、4位互换,5、6位互换

    整体思路:1、此密码(注册码)是利用用户名经过某种变化而来
            2、对用户输入的密码(注册码)进入变化
            3、F1(用户名)=F2(密码)
    用户名:swzyzl0
    注册码:C6A4D2

    [ 本帖最后由 E之郎 于 2007-12-22 18:18 编辑 ]
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-12-22 19:03:29 | 显示全部楼层
    楼主厉害的说,学习了
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-11-6 10:18
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2007-12-22 19:20:43 | 显示全部楼层
    算法总结:将PYG与用户名组合,计算出3组数据,以这3组数据为基础,计算出注册码,固定的6位.过程如下:
    1\取 P 的ASCII码 + Name的1\4\7\10...位ASCII的和,记做 A
      取 Y 的ASCII码 + Name的2\5\8\11...位ASCII的和,记做 B
      取 G 的ASCII码 + Name的3\6\9\12...位ASCII的和,记做 C
    2\
    SN1为: A and  F 的得数,大于 9,就 + 37,将结果转换成字符;小于 9,就 + 30,将结果转换成字符.
    SN2为: (A sar  4)and F 的得数,大于 9,就 + 37,将结果转换成字符;小于 9,就 + 30,将结果转换成字符.
    SN3为: B and  F 的得数,大于 9,就 + 37,将结果转换成字符;小于 9,就 + 30,将结果转换成字符.
    SN4为: (B sar  4)and F 的得数,大于 9,就 + 37,将结果转换成字符;小于 9,就 + 30,将结果转换成字符.
    SN5为: C and  F 的得数,大于 9,就 + 37,将结果转换成字符;小于 9,就 + 30,将结果转换成字符.
    SN6为: (C sar  4)and F 的得数,大于 9,就 + 37,将结果转换成字符;小于 9,就 + 30,将结果转换成字符.
    (你可以把" B and  F "    "(C sar  4)and F "直接的理解为:取低位的第1\2位)
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-8-10 19:15
  • 签到天数: 33 天

    [LV.5]常住居民I

    发表于 2007-12-26 21:36:32 | 显示全部楼层
    不懂算法,这个我没有找到注册码/:002
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-2-6 23:35
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2007-12-27 10:15:42 | 显示全部楼层
    原帖由 剑客之道 于 2007-12-26 21:36 发表
    不懂算法,这个我没有找到注册码/:002

    已经被前面的两位 喀嚓 了/:002
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-12-27 12:13:03 | 显示全部楼层
    菜啊,只能搞爆破。。。。/:002
    向高手学习了。。。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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