老文章档案 · 2003 年

扫描仪阅卷系统V5.24的破解

破解教程 · 暴力破解 · 2003-10-20 · 作者:nahum 人气: · 出处:赢政天下整理收藏)

Email:nahum@163.com

下载地址http://www.skycn.com/soft/9446.html

破解工具:ollydb,pescan,Regmon

破解难度:一般

文章简介:

本文只是对这种类型的加密方法进行讨论。并非用于商业用途。请软件作者原谅。

功能和保护方式简介:

重起验证注册号(不知道应该叫那种,生成一个INI的文件包含注册信息)

破解分析:

下载后安装,一切正常。OK。运行GradeSheet看看先。

机器码:314408964

注册码:随便填写

点注册,提示已经写入注册信息,请重新启动软件,如不出现此窗口则表明注册成功。

好了,进行下一步。用Regmon看看是否往注册表里写东西,没有,忽然发现访问WINDOWS目录下GRADESHEET.INI文件。

打开看看内容如下:

[MyChoice]

Serial=314408964

information=Luo JianDa at YunLong Senior High School of CiXi City ZheJiang Province China LUOJZNB@ZJ165.COM

看来Serial是关键了。进行下一步。

看看是否有壳,PESCAN很好用哟。ASPACK2.12脱壳完毕。运行看看是否有问题。好,没有问题运行正常。

开试用OLLYDB加载运行。搜索提示字符串Serial的找到两处,分别下断点。

其中一处如下:

0040E77A . 50 PUSH EAX 》》断到这里的时候正确的注册码已经产生了。

0040E77B . 51 PUSH ECX

0040E77C . 52 PUSH EDX

0040E77D . E8 7C060100 CALL GRADESHE.0041EDFE

0040E782 . 50 PUSH EAX

0040E783 . 8D4C24 1C LEA ECX,DWORD PTR SS:[ESP+1C]

0040E787 . C68424 D000000>MOV BYTE PTR SS:[ESP+D0],4

0040E78F . E8 74050100 CALL GRADESHE.0041ED08

0040E794 . 8D4C24 10 LEA ECX,DWORD PTR SS:[ESP+10]

0040E798 . C68424 CC00000>MOV BYTE PTR SS:[ESP+CC],3

0040E7A0 . E8 76040100 CALL GRADESHE.0041EC1B

0040E7A5 . E8 35D70100 CALL GRADESHE.0042BEDF

0040E7AA . 8B40 04 MOV EAX,DWORD PTR DS:[EAX+4]

0040E7AD . 68 F4924300 PUSH GRADESHE.004392F4 ; ASCII "unregisted"

0040E7B2 . 68 E8914300 PUSH GRADESHE.004391E8 ; ASCII "Serial"参考在这里

0040E7B7 . 8D4C24 2C LEA ECX,DWORD PTR SS:[ESP+2C]

0040E7BB . 68 DC914300 PUSH GRADESHE.004391DC ; ASCII "MyChoice"

0040E7C0 . 51 PUSH ECX

0040E7C1 . 8BC8 MOV ECX,EAX

0040E7C3 . E8 33D90100 CALL GRADESHE.0042C0FB 》》读取INI文件中的注册码

0040E7C8 . 8B5424 24 MOV EDX,DWORD PTR SS:[ESP+24] 》》输入的注册码

0040E7CC . 8B4424 18 MOV EAX,DWORD PTR SS:[ESP+18] 》》正确的注册码 我的是9902911522

0040E7D0 . 52 PUSH EDX ; /Arg2

0040E7D1 . 50 PUSH EAX ; |Arg1

0040E7D2 . C68424 D400000>MOV BYTE PTR SS:[ESP+D4],5 ; |

0040E7DA . E8 06530000 CALL GRADESHE.00413AE5 比较注册码 跟进

0040E7DF . 83C4 08 ADD ESP,8

0040E7E2 . 85C0 TEST EAX,EAX

0040E7E4 . 75 0B JNZ SHORT GRADESHE.0040E7F1

0040E7E6 . 899E F42A0000 MOV DWORD PTR DS:[ESI+2AF4],EBX

0040E7EC . E9 CB000000 JMP GRADESHE.0040E8BC

0040E7F1 > 53 PUSH EBX ; /Arg1

0040E7F2 . 8D4C24 44 LEA ECX,DWORD PTR SS:[ESP+44] ; |

0040E7F6 . E8 75E9FFFF CALL GRADESHE.0040D170 ; \GRADESHE.0040D170

0040E7FB . 8D4C24 40 LEA ECX,DWORD PTR SS:[ESP+40]

0040E7FF . C68424 CC00000>MOV BYTE PTR SS:[ESP+CC],6

0040E807 . E8 A74B0100 CALL GRADESHE.004233B3

0040E80C . 8D8C24 C000000>LEA ECX,DWORD PTR SS:[ESP+C0]

0040E813 . C68424 CC00000>MOV BYTE PTR SS:[ESP+CC],0B

0040E81B . E8 FB030100 CALL GRADESHE.0041EC1B

0040E820 . 8D8C24 BC00000>LEA ECX,DWORD PTR SS:[ESP+BC]

0040E827 . C68424 CC00000>MOV BYTE PTR SS:[ESP+CC],0A

0040E82F . E8 E7030100 CALL GRADESHE.0041EC1B

注册码比较部分:此处是一循环,逐个比较,如果第一个不正确就跳出循环。

00413B14 |> 66:0FB60F /MOVZX CX,BYTE PTR DS:[EDI]

00413B18 |. 0FB6C1 |MOVZX EAX,CL

00413B1B |. 47 |INC EDI

00413B1C |. 894D 0C |MOV DWORD PTR SS:[EBP+C],ECX

00413B1F |. F680 81B54700 >|TEST BYTE PTR DS:[EAX+47B581],4

00413B26 |. 74 16 |JE SHORT GRADESHE.00413B3E

00413B28 |. 8A07 |MOV AL,BYTE PTR DS:[EDI]

00413B2A |. 84C0 |TEST AL,AL

00413B2C |. 75 06 |JNZ SHORT GRADESHE.00413B34

00413B2E |. 8365 0C 00 |AND DWORD PTR SS:[EBP+C],0

00413B32 |. EB 0A |JMP SHORT GRADESHE.00413B3E

00413B34 |> 33D2 |XOR EDX,EDX

00413B36 |. 47 |INC EDI

00413B37 |. 8AF1 |MOV DH,CL

00413B39 |. 8AD0 |MOV DL,AL

00413B3B |. 8955 0C |MOV DWORD PTR SS:[EBP+C],EDX

00413B3E |> 66:0FB61E |MOVZX BX,BYTE PTR DS:[ESI]

00413B42 |. 0FB6C3 |MOVZX EAX,BL

00413B45 |. 46 |INC ESI

00413B46 |. F680 81B54700 >|TEST BYTE PTR DS:[EAX+47B581],4

00413B4D |. 74 13 |JE SHORT GRADESHE.00413B62

00413B4F |. 8A06 |MOV AL,BYTE PTR DS:[ESI]

00413B51 |. 84C0 |TEST AL,AL

00413B53 |. 75 04 |JNZ SHORT GRADESHE.00413B59

00413B55 |. 33DB |XOR EBX,EBX

00413B57 |. EB 09 |JMP SHORT GRADESHE.00413B62

00413B59 |> 33C9 |XOR ECX,ECX

00413B5B |. 46 |INC ESI

00413B5C |. 8AEB |MOV CH,BL

00413B5E |. 8AC8 |MOV CL,AL

00413B60 |. 8BD9 |MOV EBX,ECX

00413B62 |> 66:395D 0C |CMP WORD PTR SS:[EBP+C],BX 比较注册码的单个字符是否相同

00413B66 |. 75 09 |JNZ SHORT GRADESHE.00413B71 跳就OVER

00413B68 |. 66:837D 0C 00 |CMP WORD PTR SS:[EBP+C],0

00413B6D |. 74 16 |JE SHORT GRADESHE.00413B85 比较完毕跳出循环。

00413B6F |.^EB A3 \JMP SHORT GRADESHE.00413B14

以上部分意义不大,感兴趣的是如何计算的注册码,到断点的以上部分看看,部分看看。

0040E5A0 > 8B96 F4000000 MOV EDX,DWORD PTR DS:[ESI+F4]

0040E5A6 . 57 PUSH EDI

0040E5A7 . 53 PUSH EBX

0040E5A8 . 68 03100000 PUSH 1003

0040E5AD . 52 PUSH EDX

0040E5AE . FFD5 CALL EBP

0040E5B0 . 50 PUSH EAX

0040E5B1 . E8 95EE0000 CALL GRADESHE.0041D44B

0040E5B6 . 83CD FF OR EBP,FFFFFFFF

0040E5B9 . 899E F01E0000 MOV DWORD PTR DS:[ESI+1EF0],EBX

0040E5BF . 899E 142B0000 MOV DWORD PTR DS:[ESI+2B14],EBX

0040E5C5 . 899E E41E0000 MOV DWORD PTR DS:[ESI+1EE4],EBX

0040E5CB . 899E E01E0000 MOV DWORD PTR DS:[ESI+1EE0],EBX

0040E5D1 . 89AE E81E0000 MOV DWORD PTR DS:[ESI+1EE8],EBP

0040E5D7 . 89AE EC1E0000 MOV DWORD PTR DS:[ESI+1EEC],EBP

0040E5DD . 899E F41E0000 MOV DWORD PTR DS:[ESI+1EF4],EBX

0040E5E3 . 899E F81E0000 MOV DWORD PTR DS:[ESI+1EF8],EBX

0040E5E9 . 899E E02A0000 MOV DWORD PTR DS:[ESI+2AE0],EBX

0040E5EF . 899E E42A0000 MOV DWORD PTR DS:[ESI+2AE4],EBX

0040E5F5 . 899E EC2A0000 MOV DWORD PTR DS:[ESI+2AEC],EBX

0040E5FB . 899E F02A0000 MOV DWORD PTR DS:[ESI+2AF0],EBX

0040E601 . C786 F42A0000 >MOV DWORD PTR DS:[ESI+2AF4],1

0040E60B . A1 F8984300 MOV EAX,DWORD PTR DS:[4398F8]

0040E610 . 894424 14 MOV DWORD PTR SS:[ESP+14],EAX

0040E614 . 8D4C24 38 LEA ECX,DWORD PTR SS:[ESP+38]

0040E618 . 8D5424 28 LEA EDX,DWORD PTR SS:[ESP+28]

0040E61C . 51 PUSH ECX ; /pTotalNumberOfFreeBytes

0040E61D . 8D4424 34 LEA EAX,DWORD PTR SS:[ESP+34] ; |

0040E621 . 52 PUSH EDX ; |pTotalNumberOfBytes

0040E622 . 50 PUSH EAX ; |pFreeBytesAvailableToCaller

0040E623 . 68 8C914300 PUSH GRADESHE.0043918C ; |DirectoryName = "c:"

0040E628 . 899C24 DC00000>MOV DWORD PTR SS:[ESP+DC],EBX ; |

0040E62F . FF15 B4F14200 CALL DWORD PTR DS:[<&KERNEL32.GetDiskFreeS>; \GetDiskFreeSpaceExA

0040E635 . 83F8 01 CMP EAX,1

0040E638 . 75 1E JNZ SHORT GRADESHE.0040E658

0040E63A . 8B4C24 2C MOV ECX,DWORD PTR SS:[ESP+2C]

0040E63E . 8B5424 28 MOV EDX,DWORD PTR SS:[ESP+28]

0040E642 . 51 PUSH ECX

0040E643 . 52 PUSH EDX

0040E644 . 8D4424 1C LEA EAX,DWORD PTR SS:[ESP+1C]

0040E648 . 68 84914300 PUSH GRADESHE.00439184 ; ASCII "%I64u"

0040E64D . 50 PUSH EAX

0040E64E . E8 06E20000 CALL GRADESHE.0041C859 ; 计算机器码很明显是根据C盘的自由空间来计算的。

0040E653 . 83C4 10 ADD ESP,10

0040E656 . EB 0C JMP SHORT GRADESHE.0040E664

0040E658 > 53 PUSH EBX ; /Arg3

0040E659 . 53 PUSH EBX ; |Arg2

0040E65A . 68 68914300 PUSH GRADESHE.00439168 ; |Arg1 = 00439168

0040E65F . E8 56A10100 CALL GRADESHE.004287BA ; \GRADESHE.004287BA

0040E664 > 8B4C24 14 MOV ECX,DWORD PTR SS:[ESP+14]

0040E668 . 8B41 F8 MOV EAX,DWORD PTR DS:[ECX-8]

0040E66B . 83F8 08 CMP EAX,8

0040E66E . 7D 0C JGE SHORT GRADESHE.0040E67C

0040E670 . 53 PUSH EBX ; /Arg3

0040E671 . 53 PUSH EBX ; |Arg2

0040E672 . 68 68914300 PUSH GRADESHE.00439168 ; |Arg1 = 00439168

0040E677 . E8 3EA10100 CALL GRADESHE.004287BA ; \GRADESHE.004287BA

0040E67C > 8D5424 10 LEA EDX,DWORD PTR SS:[ESP+10]

0040E680 . 6A 08 PUSH 8

0040E682 . 52 PUSH EDX

0040E683 . 8D4C24 1C LEA ECX,DWORD PTR SS:[ESP+1C]

0040E687 . E8 F2DD0000 CALL GRADESHE.0041C47E ; 去掉机器码的后2位

0040E68C . 50 PUSH EAX

0040E68D . 8D4C24 18 LEA ECX,DWORD PTR SS:[ESP+18]

0040E691 . C68424 D000000>MOV BYTE PTR SS:[ESP+D0],1

0040E699 . E8 6A060100 CALL GRADESHE.0041ED08

0040E69E . 8D4C24 10 LEA ECX,DWORD PTR SS:[ESP+10]

0040E6A2 . 889C24 CC00000>MOV BYTE PTR SS:[ESP+CC],BL

0040E6A9 . E8 6D050100 CALL GRADESHE.0041EC1B

0040E6AE . 8B4424 14 MOV EAX,DWORD PTR SS:[ESP+14]

0040E6B2 . 50 PUSH EAX

0040E6B3 . E8 9C580000 CALL GRADESHE.00413F54 ; 变成UNICOD

0040E6B8 . 05 23612D01 ADD EAX,12D6123

0040E6BD . 8D4C24 18 LEA ECX,DWORD PTR SS:[ESP+18] ; 去2位后的注册码相减

0040E6C1 . 50 PUSH EAX

0040E6C2 . 68 00934300 PUSH GRADESHE.00439300 ; ASCII "%ld"

0040E6C7 . 51 PUSH ECX

0040E6C8 . E8 8CE10000 CALL GRADESHE.0041C859 ; 运算

0040E6CD . 83C4 10 ADD ESP,10

0040E6D0 . 8D4C24 14 LEA ECX,DWORD PTR SS:[ESP+14]

0040E6D4 . E8 1C0A0100 CALL GRADESHE.0041F0F5 ; 到过来排序

0040E6D9 . 68 80914300 PUSH GRADESHE.00439180 ; ASCII "?:\"

0040E6DE . 8D4C24 20 LEA ECX,DWORD PTR SS:[ESP+20]

0040E6E2 . 895C24 14 MOV DWORD PTR SS:[ESP+14],EBX

0040E6E6 . 33FF XOR EDI,EDI

0040E6E8 . E8 9C050100 CALL GRADESHE.0041EC89

0040E6ED . C68424 CC00000>MOV BYTE PTR SS:[ESP+CC],2

0040E6F5 . FF15 B8F14200 CALL DWORD PTR DS:[<&KERNEL32.GetLogicalDr>; [GetLogicalDrives

0040E6FB . 3BC3 CMP EAX,EBX

0040E6FD . 894424 20 MOV DWORD PTR SS:[ESP+20],EAX

0040E701 . 74 43 JE SHORT GRADESHE.0040E746

0040E703 . 8B2D BCF14200 MOV EBP,DWORD PTR DS:[<&KERNEL32.GetDriveT>

0040E709 > A8 01 TEST AL,1 ; 开始这里循环

0040E70B . 74 23 JE SHORT GRADESHE.0040E730

0040E70D . 8A5424 10 MOV DL,BYTE PTR SS:[ESP+10]

0040E711 . 8D4C24 1C LEA ECX,DWORD PTR SS:[ESP+1C]

0040E715 . 80C2 41 ADD DL,41

0040E718 . 52 PUSH EDX

0040E719 . 53 PUSH EBX

0040E71A . E8 E8090100 CALL GRADESHE.0041F107

0040E71F . 8B4424 1C MOV EAX,DWORD PTR SS:[ESP+1C] ; 从A:到最后一个驱动器

0040E723 . 50 PUSH EAX

0040E724 . FFD5 CALL EBP

0040E726 . 83F8 03 CMP EAX,3

0040E729 . 75 01 JNZ SHORT GRADESHE.0040E72C

0040E72B . 47 INC EDI

0040E72C > 8B4424 20 MOV EAX,DWORD PTR SS:[ESP+20]

0040E730 > 8B5424 10 MOV EDX,DWORD PTR SS:[ESP+10]

0040E734 . D1E8 SHR EAX,1

0040E736 . 42 INC EDX

0040E737 . 3BC3 CMP EAX,EBX

0040E739 . 894424 20 MOV DWORD PTR SS:[ESP+20],EAX

0040E73D . 895424 10 MOV DWORD PTR SS:[ESP+10],EDX

0040E741 .^75 C6 JNZ SHORT GRADESHE.0040E709 ; 循环依次运算所有逻辑盘最后是取最后一个驱动器的盘符我的是“g:\"

0040E743 . 83CD FF OR EBP,FFFFFFFF

0040E746 > 8B0D F8984300 MOV ECX,DWORD PTR DS:[4398F8] ; GRADESHE.0043990C

0040E74C . 894C24 18 MOV DWORD PTR SS:[ESP+18],ECX

0040E750 . 83C7 12 ADD EDI,12

0040E753 . 8D5424 18 LEA EDX,DWORD PTR SS:[ESP+18]

0040E757 . 57 PUSH EDI

0040E758 . 68 7C914300 PUSH GRADESHE.0043917C ; ASCII "%d"

0040E75D . 52 PUSH EDX

0040E75E . C68424 D800000>MOV BYTE PTR SS:[ESP+D8],3

0040E766 . E8 EEE00000 CALL GRADESHE.0041C859 ; 计算出注册码的最后2位

0040E76B . 83C4 0C ADD ESP,0C

0040E76E . 8D4424 18 LEA EAX,DWORD PTR SS:[ESP+18]

0040E772 . 8D4C24 14 LEA ECX,DWORD PTR SS:[ESP+1

由于时间问题(先找个台阶下),就不在往下写了,至于算法部分本人很菜,怕在各位高手面前买弄,不写了。

感兴趣的可以看看。

总结:

菜鸟总是要从最菜的地方开始。没有办法呀。目前对自己要求不高,能找到正确的注册码就行,算法这个东西,闹不懂。希望各位高手不要见笑。

(出处:赢政天下整理收藏)

相关文章:

·Tornado2之Licence暴力破解

·万能五笔2001注册码分析及暴力破解

·万能五笔2001注册码分析及暴力破解

·万能五笔2001注册码分析及暴力破解 ---可怜的思考者 (27千字)

·一个拨号软件的Win32Dasm暴力破解法

·CuteFTP V4.2.4之暴力破解

相关软件:

·电话卡暴力破解器 v2.0 (0425版)

→ 特别推荐

→ 热点TOP10

我为人人《《==》》人人为我

关于我们 |

帮助(?)

| 广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright © 1999-2003

winzheng.com All Rights Reserved.

繁体版:由华琦数码技术提供

Powered

by:MeSky.Net

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。
🕰 → 🤖 从那时到现在

当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。

档案性质声明:本页为赢政天下(1998-2011)老文章的历史档案复原, 内容反映当年发表时的原貌——包括当年的技术表述、软件版本与观点,部分方法在今天已不适用或不合规,仅作互联网历史记录与研究用途, 不提供任何形式的下载。原始数据经由公共网络存档(Internet Archive)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史