飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2368|回复: 1

中学CAI课件、积件管理 V1.0的注册

[复制链接]
  • TA的每日心情

    2024-4-11 22:10
  • 签到天数: 53 天

    [LV.5]常住居民I

    发表于 2005-5-10 15:36:24 | 显示全部楼层 |阅读模式
    【破文作者】   Rdsnow[PYG]

    【 E-mail 】   RDSNOW@163.COM

    【 作者QQ 】   83757177

    【文章题目】   中学CAI课件、积件管理 V1.0的注册

    【软件名称】   中学CAI课件、积件管理 V1.0

    【下载地址】   http://www.softreg.com.cn/shareware_view.aspx?id=/65FB0BC4-A791-45A4-8545-45CEAC8CDE5F/
    ----------------------------------------------------------------------------------------------
    【加密方式】   注册码

    破解工具】   FLYOD V1.10、W32DASM V8.93

    【软件限制】   功能限制

    【破解平台】   XP SP2

    ----------------------------------------------------------------------------------------------
    【软件简介】

    该软件提供了易用的课件(积件)收集、分类、浏览、调用等功能,通过它就可以将分散的课件、积件很好地管理起来,使广大教师能够充分地利用这些课件和积件资源。

    【文章简介】

    作者为这个软件的注册写了很多代码,但是却采用了明码比较,这就可以让破解者在短短几分钟内得到注册码!这是软件作者的失误,另外,注册时虽然有注册信息码,而且计算过程中也有对信息码的处理,但是却不影响到最后的注册码!让我们来看看这个软件的注册。

    ----------------------------------------------------------------------------------------------
    【破解过程】

    OD载入,输入用户名"Rdsnow",假注册码"987A-8765B-7654C",来到这里:
    004F60EA  |> \8D55 E4       LEA EDX,DWORD PTR SS:[EBP-1C]
    004F60ED  |.  8B83 14030000 MOV EAX,DWORD PTR DS:[EBX+314]
    004F60F3  |.  E8 4C5AF5FF   CALL Unpacked.0044BB44              ;  取得注册信息码
    004F60F8  |.  8B45 E4       MOV EAX,DWORD PTR SS:[EBP-1C]
    004F60FB  |.  50            PUSH EAX
    004F60FC  |.  8D55 E0       LEA EDX,DWORD PTR SS:[EBP-20]
    004F60FF  |.  8B83 10030000 MOV EAX,DWORD PTR DS:[EBX+310]
    004F6105  |.  E8 3A5AF5FF   CALL Unpacked.0044BB44              ;  取得用户名
    004F610A  |.  8B45 E0       MOV EAX,DWORD PTR SS:[EBP-20]
    004F610D  |.  8D4D E8       LEA ECX,DWORD PTR SS:[EBP-18]
    004F6110  |.  5A            POP EDX
    004F6111  |.  E8 42F4FFFF   CALL Unpacked.004F5558              ;  算注册码
    004F6116  |.  8B45 E8       MOV EAX,DWORD PTR SS:[EBP-18]
    004F6119  |.  50            PUSH EAX
    004F611A  |.  8D55 D8       LEA EDX,DWORD PTR SS:[EBP-28]
    004F611D  |.  8B83 18030000 MOV EAX,DWORD PTR DS:[EBX+318]
    004F6123  |.  E8 1C5AF5FF   CALL Unpacked.0044BB44              ;  取出输入的假注册码的第一段
    004F6128  |.  FF75 D8       PUSH DWORD PTR SS:[EBP-28]
    004F612B  |.  8D55 D4       LEA EDX,DWORD PTR SS:[EBP-2C]
    004F612E  |.  8B83 1C030000 MOV EAX,DWORD PTR DS:[EBX+31C]
    004F6134  |.  E8 0B5AF5FF   CALL Unpacked.0044BB44              ;  取出输入的假注册码的第二段
    004F6139  |.  FF75 D4       PUSH DWORD PTR SS:[EBP-2C]
    004F613C  |.  8D55 D0       LEA EDX,DWORD PTR SS:[EBP-30]
    004F613F  |.  8B83 20030000 MOV EAX,DWORD PTR DS:[EBX+320]
    004F6145  |.  E8 FA59F5FF   CALL Unpacked.0044BB44              ;  取出输入的假注册码的第三段
    004F614A  |.  FF75 D0       PUSH DWORD PTR SS:[EBP-30]
    004F614D  |.  8D45 DC       LEA EAX,DWORD PTR SS:[EBP-24]
    004F6150  |.  BA 03000000   MOV EDX,3
    004F6155  |.  E8 5EEBF0FF   CALL Unpacked.00404CB8              ;  连接三段假码(不包括'-')
    004F615A  |.  8B45 DC       MOV EAX,DWORD PTR SS:[EBP-24]
    004F615D  |.  5A            POP EDX
    004F615E  |.  E8 E12DF1FF   CALL Unpacked.00408F44              ;  比较真假注册码
    004F6163  |.  85C0          TEST EAX,EAX
    004F6165  |.  0F85 6D010000 JNZ Unpacked.004F62D8               ;  不相等就跳

    如果不想分析注册代码,在004F615E地址上中断,做内存注册机,或者将004F6165 JNZ 004F62D8直接NOP掉就可以爆破了

    ----------------------------------------------------------------------------------------------
    想看注册代码,进入004F6111 CALL 004F5558
    004F5558  $  55            PUSH EBP
    004F5559  |.  8BEC          MOV EBP,ESP
    004F555B  |.  51            PUSH ECX
    004F555C  |.  B9 0D000000   MOV ECX,0D
    004F5561  |>  6A 00         PUSH 0
    004F5563  |.  6A 00         |PUSH 0
    004F5565  |.  49            |DEC ECX
    004F5566  |.^ 75 F9         \JNZ SHORT Unpacked.004F5561
    004F5568  |.  51            PUSH ECX
    004F5569  |.  874D FC       XCHG DWORD PTR SS:[EBP-4],ECX
    004F556C  |.  53            PUSH EBX
    004F556D  |.  56            PUSH ESI
    004F556E  |.  57            PUSH EDI
    004F556F  |.  894D F4       MOV DWORD PTR SS:[EBP-C],ECX
    004F5572  |.  8955 F8       MOV DWORD PTR SS:[EBP-8],EDX
    004F5575  |.  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX
    004F5578  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    004F557B  |.  E8 60F8F0FF   CALL Unpacked.00404DE0
    004F5580  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
    004F5583  |.  E8 58F8F0FF   CALL Unpacked.00404DE0
    004F5588  |.  33C0          XOR EAX,EAX
    004F558A  |.  55            PUSH EBP
    004F558B  |.  68 66584F00   PUSH Unpacked.004F5866
    004F5590  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
    004F5593  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
    004F5596  |.  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
    004F5599  |.  E8 A2F3F0FF   CALL Unpacked.00404940
    004F559E  |.  8D45 D4       LEA EAX,DWORD PTR SS:[EBP-2C]
    004F55A1  |.  50            PUSH EAX
    004F55A2  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    004F55A5  |.  E8 4EF6F0FF   CALL Unpacked.00404BF8              ;  取得用户名"Rdsnow"的长度
    004F55AA  |.  8BC8          MOV ECX,EAX
    004F55AC  |.  83E9 03       SUB ECX,3
    004F55AF  |.  BA 04000000   MOV EDX,4
    004F55B4  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    004F55B7  |.  E8 94F8F0FF   CALL Unpacked.00404E50              ;  从第四个字符开始取用户名后面的字符,得到"now"
    004F55BC  |.  8B45 D4       MOV EAX,DWORD PTR SS:[EBP-2C]
    004F55BF  |.  50            PUSH EAX
    004F55C0  |.  8D45 CC       LEA EAX,DWORD PTR SS:[EBP-34]
    004F55C3  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]
    004F55C6  |.  8A12          MOV DL,BYTE PTR DS:[EDX]
    004F55C8  |.  8850 01       MOV BYTE PTR DS:[EAX+1],DL
    004F55CB  |.  C600 01       MOV BYTE PTR DS:[EAX],1
    004F55CE  |.  8D55 CC       LEA EDX,DWORD PTR SS:[EBP-34]
    004F55D1  |.  8D45 C8       LEA EAX,DWORD PTR SS:[EBP-38]
    004F55D4  |.  E8 A7D9F0FF   CALL Unpacked.00402F80
    004F55D9  |.  BA 74584F00   MOV EDX,Unpacked.004F5874
    004F55DE  |.  8D45 C8       LEA EAX,DWORD PTR SS:[EBP-38]
    004F55E1  |.  B1 02         MOV CL,2
    004F55E3  |.  E8 68D9F0FF   CALL Unpacked.00402F50
    004F55E8  |.  8D55 C8       LEA EDX,DWORD PTR SS:[EBP-38]
    004F55EB  |.  8D45 C4       LEA EAX,DWORD PTR SS:[EBP-3C]
    004F55EE  |.  E8 8DD9F0FF   CALL Unpacked.00402F80
    004F55F3  |.  8D45 C0       LEA EAX,DWORD PTR SS:[EBP-40]
    004F55F6  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]
    004F55F9  |.  8A52 01       MOV DL,BYTE PTR DS:[EDX+1]
    004F55FC  |.  8850 01       MOV BYTE PTR DS:[EAX+1],DL
    004F55FF  |.  C600 01       MOV BYTE PTR DS:[EAX],1
    004F5602  |.  8D55 C0       LEA EDX,DWORD PTR SS:[EBP-40]
    004F5605  |.  8D45 C4       LEA EAX,DWORD PTR SS:[EBP-3C]
    004F5608  |.  B1 03         MOV CL,3
    004F560A  |.  E8 41D9F0FF   CALL Unpacked.00402F50
    004F560F  |.  8D55 C4       LEA EDX,DWORD PTR SS:[EBP-3C]
    004F5612  |.  8D45 B8       LEA EAX,DWORD PTR SS:[EBP-48]
    004F5615  |.  E8 66D9F0FF   CALL Unpacked.00402F80
    004F561A  |.  BA 78584F00   MOV EDX,Unpacked.004F5878
    004F561F  |.  8D45 B8       LEA EAX,DWORD PTR SS:[EBP-48]
    004F5622  |.  B1 04         MOV CL,4
    004F5624  |.  E8 27D9F0FF   CALL Unpacked.00402F50
    004F5629  |.  8D55 B8       LEA EDX,DWORD PTR SS:[EBP-48]
    004F562C  |.  8D45 B0       LEA EAX,DWORD PTR SS:[EBP-50]
    004F562F  |.  E8 4CD9F0FF   CALL Unpacked.00402F80
    004F5634  |.  8D45 C0       LEA EAX,DWORD PTR SS:[EBP-40]
    004F5637  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]
    004F563A  |.  8A52 02       MOV DL,BYTE PTR DS:[EDX+2]
    004F563D  |.  8850 01       MOV BYTE PTR DS:[EAX+1],DL
    004F5640  |.  C600 01       MOV BYTE PTR DS:[EAX],1
    004F5643  |.  8D55 C0       LEA EDX,DWORD PTR SS:[EBP-40]
    004F5646  |.  8D45 B0       LEA EAX,DWORD PTR SS:[EBP-50]
    004F5649  |.  B1 05         MOV CL,5
    004F564B  |.  E8 00D9F0FF   CALL Unpacked.00402F50
    004F5650  |.  8D55 B0       LEA EDX,DWORD PTR SS:[EBP-50]
    004F5653  |.  8D45 A8       LEA EAX,DWORD PTR SS:[EBP-58]
    004F5656  |.  E8 25D9F0FF   CALL Unpacked.00402F80
    004F565B  |.  BA 7C584F00   MOV EDX,Unpacked.004F587C
    004F5660  |.  8D45 A8       LEA EAX,DWORD PTR SS:[EBP-58]
    004F5663  |.  B1 06         MOV CL,6
    004F5665  |.  E8 E6D8F0FF   CALL Unpacked.00402F50
    004F566A  |.  8D55 A8       LEA EDX,DWORD PTR SS:[EBP-58]
    004F566D  |.  8D45 D0       LEA EAX,DWORD PTR SS:[EBP-30]
    004F5670  |.  E8 27F5F0FF   CALL Unpacked.00404B9C              ;  以上用户名前三个字符"Rds"中依次插入字符'z'、'j'、'y'得到"Rzdjsy"
    004F5675  |.  8B55 D0       MOV EDX,DWORD PTR SS:[EBP-30]
    004F5678  |.  8D45 EC       LEA EAX,DWORD PTR SS:[EBP-14]
    004F567B  |.  59            POP ECX
    004F567C  |.  E8 C3F5F0FF   CALL Unpacked.00404C44              ;  再跟后面的"now"合并得到变形的用户名"Rzdjsynow"
    004F5681  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    004F5684  |.  E8 6FF5F0FF   CALL Unpacked.00404BF8              ;  取得原用户名"Rdsnow"的长度
    004F5689  |.  8BF8          MOV EDI,EAX
    004F568B  |.  57            PUSH EDI
    004F568C  |.  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
    004F568F  |.  B9 01000000   MOV ECX,1
    004F5694  |.  8B15 38554F00 MOV EDX,DWORD PTR DS:[4F5538]       ;  Unpacked.004F553C
    004F569A  |.  E8 890AF1FF   CALL Unpacked.00406128
    004F569F  |.  83C4 04       ADD ESP,4
    004F56A2  |.  8BF7          MOV ESI,EDI                         ;  以原用户名的长度作为循环次数
    004F56A4  |.  85F6          TEST ESI,ESI
    004F56A6  |.  7E 32         JLE SHORT Unpacked.004F56DA
    004F56A8  |.  BB 01000000   MOV EBX,1                           ;  i=1,准备循环
    004F56AD  |>  8D45 A0       LEA EAX,DWORD PTR SS:[EBP-60]
    004F56B0  |.  8B55 EC       |MOV EDX,DWORD PTR SS:[EBP-14]
    004F56B3  |.  8A541A FF     |MOV DL,BYTE PTR DS:[EDX+EBX-1]
    004F56B7  |.  E8 64F4F0FF   |CALL Unpacked.00404B20
    004F56BC  |.  8B45 A0       |MOV EAX,DWORD PTR SS:[EBP-60]
    004F56BF  |.  8D55 A4       |LEA EDX,DWORD PTR SS:[EBP-5C]
    004F56C2  |.  E8 B5F3FFFF   |CALL Unpacked.004F4A7C
    004F56C7  |.  8B55 A4       |MOV EDX,DWORD PTR SS:[EBP-5C]
    004F56CA  |.  8B45 F0       |MOV EAX,DWORD PTR SS:[EBP-10]
    004F56CD  |.  8D4498 FC     |LEA EAX,DWORD PTR DS:[EAX+EBX*4-4]
    004F56D1  |.  E8 BEF2F0FF   |CALL Unpacked.00404994
    004F56D6  |.  43            |INC EBX
    004F56D7  |.  4E            |DEC ESI
    004F56D8  |.^ 75 D3         \JNZ SHORT Unpacked.004F56AD        ;  以上循环把"Rzdjsynow"去掉后面三位的各个字符去查表,每个字符对应四位数字
    004F56DA  |>  8BF7          MOV ESI,EDI
    004F56DC  |.  4E            DEC ESI
    004F56DD  |.  85F6          TEST ESI,ESI
    004F56DF  |.  7C 15         JL SHORT Unpacked.004F56F6
    004F56E1  |.  46            INC ESI
    004F56E2  |.  33DB          XOR EBX,EBX
    004F56E4  |>  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
    004F56E7  |.  8B55 F0       |MOV EDX,DWORD PTR SS:[EBP-10]
    004F56EA  |.  8B149A        |MOV EDX,DWORD PTR DS:[EDX+EBX*4]
    004F56ED  |.  E8 0EF5F0FF   |CALL Unpacked.00404C00
    004F56F2  |.  43            |INC EBX
    004F56F3  |.  4E            |DEC ESI
    004F56F4  |.^ 75 EE         \JNZ SHORT Unpacked.004F56E4        ;  以上循环把刚才查到的数字连接成一个字符串,得到"859953476317764394215669"
    004F56F6  |>  8D45 E0       LEA EAX,DWORD PTR SS:[EBP-20]
    004F56F9  |.  E8 42F2F0FF   CALL Unpacked.00404940
    004F56FE  |.  8B45 E4       MOV EAX,DWORD PTR SS:[EBP-1C]
    004F5701  |.  E8 F2F4F0FF   CALL Unpacked.00404BF8              ;  取字符串的长度
    004F5706  |.  8BF0          MOV ESI,EAX
    004F5708  |.  85F6          TEST ESI,ESI
    004F570A  |.  7E 3D         JLE SHORT Unpacked.004F5749
    004F570C  |.  BB 01000000   MOV EBX,1
    004F5711  |>  FF75 E0       PUSH DWORD PTR SS:[EBP-20]
    004F5714  |.  8D45 9C       |LEA EAX,DWORD PTR SS:[EBP-64]
    004F5717  |.  8B55 E4       |MOV EDX,DWORD PTR SS:[EBP-1C]
    004F571A  |.  8A541A FF     |MOV DL,BYTE PTR DS:[EDX+EBX-1]
    004F571E  |.  E8 FDF3F0FF   |CALL Unpacked.00404B20
    004F5723  |.  FF75 9C       |PUSH DWORD PTR SS:[EBP-64]
    004F5726  |.  8D45 98       |LEA EAX,DWORD PTR SS:[EBP-68]
    004F5729  |.  8B55 F8       |MOV EDX,DWORD PTR SS:[EBP-8]
    004F572C  |.  8A541A FF     |MOV DL,BYTE PTR DS:[EDX+EBX-1]
    004F5730  |.  E8 EBF3F0FF   |CALL Unpacked.00404B20
    004F5735  |.  FF75 98       |PUSH DWORD PTR SS:[EBP-68]
    004F5738  |.  8D45 E0       |LEA EAX,DWORD PTR SS:[EBP-20]
    004F573B  |.  BA 03000000   |MOV EDX,3
    004F5740  |.  E8 73F5F0FF   |CALL Unpacked.00404CB8
    004F5745  |.  43            |INC EBX
    004F5746  |.  4E            |DEC ESI
    004F5747  |.^ 75 C8         \JNZ SHORT Unpacked.004F5711        ;  以上循环把机器码的各个数字依次插入字符串,并且去掉后面多余部分得到"85589998533044706"不过这个后面也没有用到,这个循环这儿做什么用,偶也不太清楚
    004F5749  |>  8D55 DC       LEA EDX,DWORD PTR SS:[EBP-24]
    004F574C  |.  8B45 E4       MOV EAX,DWORD PTR SS:[EBP-1C]
    004F574F  |.  E8 10FEF4FF   CALL Unpacked.00445564              ;  将没有插入机器码前的字符串倒序
    004F5754  |.  8D45 D8       LEA EAX,DWORD PTR SS:[EBP-28]
    004F5757  |.  E8 E4F1F0FF   CALL Unpacked.00404940
    004F575C  |.  8B45 DC       MOV EAX,DWORD PTR SS:[EBP-24]
    004F575F  |.  E8 94F4F0FF   CALL Unpacked.00404BF8              ;  取得位数
    004F5764  |.  8BF0          MOV ESI,EAX
    004F5766  |.  85F6          TEST ESI,ESI
    004F5768  |.  7E 7E         JLE SHORT Unpacked.004F57E8
    004F576A  |.  BB 01000000   MOV EBX,1                           ;  i=1,准备循环
    004F576F  |>  8D45 94       LEA EAX,DWORD PTR SS:[EBP-6C]
    004F5772  |.  8B55 DC       |MOV EDX,DWORD PTR SS:[EBP-24]
    004F5775  |.  8A541A FF     |MOV DL,BYTE PTR DS:[EDX+EBX-1]
    004F5779  |.  E8 A2F3F0FF   |CALL Unpacked.00404B20
    004F577E  |.  8B45 94       |MOV EAX,DWORD PTR SS:[EBP-6C]
    004F5781  |.  E8 163DF1FF   |CALL Unpacked.0040949C             ;  取出各位数字St[i-1],转换为整数
    004F5786  |.  8BC8          |MOV ECX,EAX
    004F5788  |.  8BC1          |MOV EAX,ECX
    004F578A  |.  F7E9          |IMUL ECX
    004F578C  |.  F7E9          |IMUL ECX                           ;  St[i-1]的三次方
    004F578E  |.  8D51 14       |LEA EDX,DWORD PTR DS:[ECX+14]      ;  St[i-1]+20
    004F5791  |.  8BFA          |MOV EDI,EDX
    004F5793  |.  99            |CDQ
    004F5794  |.  F7FF          |IDIV EDI                           ;  相除,取得余数
    004F5796  |.  8BFA          |MOV EDI,EDX
    004F5798  |.  03F9          |ADD EDI,ECX                        ;  再加上St[i-1]得到结果一
    004F579A  |.  8BC1          |MOV EAX,ECX
    004F579C  |.  F7E9          |IMUL ECX                           ;  St[i-1]的平方
    004F579E  |.  8D51 0A       |LEA EDX,DWORD PTR DS:[ECX+A]       ;  St[i-1]+10
    004F57A1  |.  51            |PUSH ECX
    004F57A2  |.  8BCA          |MOV ECX,EDX
    004F57A4  |.  99            |CDQ
    004F57A5  |.  F7F9          |IDIV ECX                           ;  相除,取得余数
    004F57A7  |.  59            |POP ECX
    004F57A8  |.  03FA          |ADD EDI,EDX                        ;  与结果一相加得到结果二
    004F57AA  |.  8D0449        |LEA EAX,DWORD PTR DS:[ECX+ECX*2]
    004F57AD  |.  03F8          |ADD EDI,EAX
    004F57AF  |.  03FB          |ADD EDI,EBX                        ;  再加上St[i-1]*3+i
    004F57B1  |.  83FF 30       |CMP EDI,30
    004F57B4  |.  7C 05         |JL SHORT Unpacked.004F57BB
    004F57B6  |.  83FF 39       |CMP EDI,39
    004F57B9  |.  7E 14         |JLE SHORT Unpacked.004F57CF
    004F57BB  |>  83FF 41       |CMP EDI,41
    004F57BE  |.  7C 05         |JL SHORT Unpacked.004F57C5
    004F57C0  |.  83FF 5A       |CMP EDI,5A
    004F57C3  |.  7E 0A         |JLE SHORT Unpacked.004F57CF
    004F57C5  |>  83FF 60       |CMP EDI,60
    004F57C8  |.  7C 1A         |JL SHORT Unpacked.004F57E4
    004F57CA  |.  83FF 7F       |CMP EDI,7F
    004F57CD  |.  7F 15         |JG SHORT Unpacked.004F57E4         ;  以上是看看结果是不是数字或字母的ASC,不是就抛弃
    004F57CF  |>  8D45 90       |LEA EAX,DWORD PTR SS:[EBP-70]
    004F57D2  |.  8BD7          |MOV EDX,EDI
    004F57D4  |.  E8 47F3F0FF   |CALL Unpacked.00404B20
    004F57D9  |.  8B55 90       |MOV EDX,DWORD PTR SS:[EBP-70]
    004F57DC  |.  8D45 E8       |LEA EAX,DWORD PTR SS:[EBP-18]
    004F57DF  |.  E8 1CF4F0FF   |CALL Unpacked.00404C00             ;  是字母或数字就保留
    004F57E4  |>  43            |INC EBX
    004F57E5  |.  4E            |DEC ESI
    004F57E6  |.^ 75 87         \JNZ SHORT Unpacked.004F576F
    004F57E8  |>  8B45 E8       MOV EAX,DWORD PTR SS:[EBP-18]       ;  经过以上循环得到"5JK4O42BC5J"
    004F57EB  |.  E8 08F4F0FF   CALL Unpacked.00404BF8
    004F57F0  |.  83F8 10       CMP EAX,10                          ;  检查结果有没有16位
    004F57F3  |.  7D 0D         JGE SHORT Unpacked.004F5802
    004F57F5  |.  8D45 E8       LEA EAX,DWORD PTR SS:[EBP-18]
    004F57F8  |.  BA 88584F00   MOV EDX,Unpacked.004F5888           ;  ASCII "ZFJSYZGNYEJDSUFOHYOJUZDZ"
    004F57FD  |.  E8 FEF3F0FF   CALL Unpacked.00404C00              ;  没有就跟以上字符串相连
    004F5802  |>  8D45 D8       LEA EAX,DWORD PTR SS:[EBP-28]
    004F5805  |.  50            PUSH EAX
    004F5806  |.  B9 0F000000   MOV ECX,0F
    004F580B  |.  BA 02000000   MOV EDX,2
    004F5810  |.  8B45 E8       MOV EAX,DWORD PTR SS:[EBP-18]
    004F5813  |.  E8 38F6F0FF   CALL Unpacked.00404E50              ;  从第二位开始取15的字符,得到"JK4O42BC5JZFJSY",加上'-'就是注册码了
    004F5818  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
    004F581B  |.  8B55 D8       MOV EDX,DWORD PTR SS:[EBP-28]
    004F581E  |.  E8 71F1F0FF   CALL Unpacked.00404994
    004F5823  |.  33C0          XOR EAX,EAX
    004F5825  |.  5A            POP EDX
    004F5826  |.  59            POP ECX
    004F5827  |.  59            POP ECX
    004F5828  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
    004F582B  |.  68 6D584F00   PUSH Unpacked.004F586D
    004F5830  |>  8D45 90       LEA EAX,DWORD PTR SS:[EBP-70]
    004F5833  |.  BA 06000000   MOV EDX,6
    004F5838  |.  E8 27F1F0FF   CALL Unpacked.00404964
    004F583D  |.  8D45 D0       LEA EAX,DWORD PTR SS:[EBP-30]
    004F5840  |.  BA 08000000   MOV EDX,8
    004F5845  |.  E8 1AF1F0FF   CALL Unpacked.00404964
    004F584A  |.  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
    004F584D  |.  8B15 38554F00 MOV EDX,DWORD PTR DS:[4F5538]       ;  Unpacked.004F553C
    004F5853  |.  E8 F009F1FF   CALL Unpacked.00406248
    004F5858  |.  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
    004F585B  |.  BA 02000000   MOV EDX,2
    004F5860  |.  E8 FFF0F0FF   CALL Unpacked.00404964
    004F5865  \.  C3            RETN
    004F5866   .^ E9 1DEAF0FF   JMP Unpacked.00404288
    004F586B   .^ EB C3         JMP SHORT Unpacked.004F5830
    004F586D   .  5F            POP EDI
    004F586E   .  5E            POP ESI
    004F586F   .  5B            POP EBX
    004F5870   .  8BE5          MOV ESP,EBP
    004F5872   .  5D            POP EBP
    004F5873   .  C3            RETN
    ----------------------------------------------------------------------------------------------

    【破解心得】

    注册代码写得再好,计算在复杂,如果采用了明码比较,等于把注册码送给别人;另外既然注册信息码已经插入字符串,为什么不用,让人觉得很费解(看上面代码的红字处);
    ?????????????????????????????????????????


    注册码是这样生成的:用户名长度大于5,小于13

    "Rdsnow" 插入字符得到 "Rzdjsynow"

    然后去掉最后三位查表,对照表如下:好像都是一些质数
    1-1697 2-1699 3-1709 4-1721 5-1723 6-1733 7-1741 8-1747 9-1759 0-1777 Aa-6299 Bb-6301 Cc-6311 Dd-6317 Ee-6323 Ff-6329 Gg-7591 Hh-7621 Ii-7639 Jj-7643 Kk-7649 Ll-7669 Mm-8543 Nn-8563 Oo-8573 Pp-8581 Qq-8597 Rr-8599 Ss-9421 Tt-9431 Uu-9437 Vv-9439 Ww-9461 Xx-9463 Yy-5669 Zz-5347
    查表得到 "859953476317764394215669"

    对个数字采用公式 St(i)^3mod(St(i)+20) + St(i)^2mod(St(i)+10) + St(i)*4 + i + 1
    (重新写的公式,i初值为0)得到ASC留下字母数字。

    最后接上"ZFJSYZGNYEJDSUFOHYOJUZDZ"从第二位开始取十五个字符,每五个插入'-',就是注册码了。

    注册码分三段保存在注册表中:
    第一段存在HKCU\Control Panel\Keyboard\CAI_m1
    第二段:HKCU\SOFTWARE\Microsoft\Shared\HTML\Old Default Editor\shell\CAI_m2
    第三段:HKLM\SYSTEM\ControlSet001\Hardware Profiles\0001\SOFTWARE\Microsoft\WAB\Export\PAB\CAI_m3
    删除其中的任何一段程序就改为未注册版了

    【注册机源码】

    编程偶不会,不知道怎样提高代码的效率,希望高手能指点一二

    void CKEYDlg::OnOK()
    {
            // TODO: Add extra validation here
           
            //CDialog::OnOK();
            //变量定义
            char cTable[250]={"1777-1697-1699-1709-1721-1723-1733-1741-1747-1759-0000-0000-0000-0000-0000-0000-0000-6299-6301-6311-6317-6323-6329-7591-7621-7639-7643-7649-7669-8543-8563-8573-8581-8597-8599-9421-9431-9437-9439-9461-9463-5669-5347"};
            int i,j,n;
            CString sUsename;
            char cUsename[16],cNumber[80],cSn;
           
            UpdateData(true);
            m_Edit2="";
            sUsename=m_Edit1;
            sUsename.MakeUpper ();//注册码跟大小写无关,转为大写是为了便于查表
            //检查用户名的长度
            n=sUsename.GetLength ();
            if (n<6 || n>12) {
                    MessageBox("用户名的长度必须在6到12之间","提示",MB_OK);
                    return;
            }
            //插入字符,检查用户名是否全失字母数字
            sUsename.Insert (1,'Z');
            sUsename.Insert (3,'J');
            sUsename.Insert (5,'Y');
            strcpy(cUsename,sUsename);
            for (i=0;i<n+3;i++){
                    if(cUsename(i)<0x30||(cUsename(i)>0x39 && cUsename(i)<0x41)||cUsename(i)>0x5A){
                            MessageBox("用户名只能由A-Z,a-z,0-9组成,请不要使用其它字符","提示",MB_OK);
                            return;
                    }
            }
            //查表
            for (i=0;i<n;i++){
                    j=cUsename(i)-0x30;
                    cNumber[i*4]=cTable[j*5];
                    cNumber[i*4+1]=cTable[5*j+1];
                    cNumber[i*4+2]=cTable[5*j+2];
                    cNumber[i*4+3]=cTable[5*j+3];
                    cNumber[i*4+4]=0;
            }
            //运用公式将数字逆序运算,取出有用的字符
            for (i=4*n;i>0;i--){
                    j=cNumber[i-1]-0x30;
                    j=(j*j*j)%(j+20)+(j*j)%(j+10)+j*4+4*n-i+1;
                    if((j>0x2F && j<0x3A)||(j>0x40 && j<0x5B)||(j>0x60 && j<0x7B)){
                            cSn=j;
                            m_Edit2 += cSn;
                    }

            }
            //最终形成注册码
            m_Edit2 += "ZFJSYZGNYEJDSUFOHYOJUZDZ";
            m_Edit2=m_Edit2.Mid (1,15);
            m_Edit2.Insert (5,'-');
            m_Edit2.Insert (11,'-');
            UpdateData(false);

    }

    注册机就不贴上来了。

    ----------------------------------------------------------------------------------------------
    【破解声明】   我是一只小菜鸟,偶得一点心得,愿与大家分享:)

    【版权声明】   本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
    ----------------------------------------------------------------------------------------------
                                                                         文章写于2005-5-2 22:56:20


    [ Last edited by rdsnow on 2005-5-12 at 07:49 AM ]
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2017-4-4 09:40
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2005-5-11 16:25:02 | 显示全部楼层
    好文,学习~~~
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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