扫描仪阅卷系统V5.24的破解
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
当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。