- UID
- 5592
注册时间2005-12-21
阅读权限40
最后登录1970-1-1
独步武林
TA的每日心情 | 慵懒 2019-1-18 17:27 |
---|
签到天数: 30 天 [LV.5]常住居民I
|
【破文标题】曙光驾驶员理论考试系统2007 解码分析
【破文作者】lzq1973[PYG][CZG][OCN][DFCG]
【作者邮箱】[email protected]
【作者主页】http://my.winzheng.com/?455397
【破解工具】OD、PEiD、C32Asm
【破解平台】WinXP
【软件名称】曙光驾驶员理论考试系统 2007.5.20
【软件大小】9945KB
【原版下载】http://www.onlinedown.net/soft/58215.htm
【保护方式】SN
【软件简介】一、本系统题库是公安部交通管理局按照修订后的《机动车驾驶证申领和使用规定》(公安部令第91号)要求编写的,共有1500道试题,再加200多道山东的地方性法规,适用于机动车驾驶员学习理论试题。
> 二、考题按要求进行科学分类:通用试题涵盖了汽车类各车型的必考知识;客车专用试题,供A1、A3、B1准驾车型申请人考试使用;货车专用试题,供A2、B2准驾车型申请人考试使用;轮式自行机械车专用试题,供各种轮式自行机械申请人考试使用。
> 三、本程序模拟考试中的抽题方式,从选择的车型的考试范围内随即抽取100道试题,模拟考试可以在交卷之后查看错题记录,便于学员查漏补缺、加深印象。浏览题库可以让学员学习考试范围内的所有试题,并在试题下方同时显示正确答案,供学员学习之用。
【破解声明】俺是只小小鸟,纯为学习,愿与大家分享!
------------------------------------------------------------------------
【破解过程】 运行软件,弹出注册窗口,试注册之有错误提示,属明码比较;
PEID侦之,ASPack 2.12 -> Alexey Solodovnikov,用其插件脱之;
OD载入脱后的文件,找相关字串后断在这里:
0052A1FC /. 55 push ebp
0052A1FD |. 8BEC mov ebp, esp
0052A1FF |. B9 05000000 mov ecx, 5
0052A204 |> 6A 00 /push 0
0052A206 |. 6A 00 |push 0
0052A208 |. 49 |dec ecx
0052A209 |.^ 75 F9 \jnz short 0052A204
0052A20B |. 53 push ebx
0052A20C |. 56 push esi
0052A20D |. 8BD8 mov ebx, eax
0052A20F |. 33C0 xor eax, eax
0052A211 |. 55 push ebp
0052A212 |. 68 F1A35200 push 0052A3F1
0052A217 |. 64:FF30 push dword ptr fs:[eax]
0052A21A |. 64:8920 mov fs:[eax], esp
0052A21D |. 8D55 FC lea edx, [ebp-4]
0052A220 |. 8B83 08030000 mov eax, [ebx+308]
0052A226 |. E8 E9D6F2FF call 00457914
0052A22B |. 8B45 FC mov eax, [ebp-4]
0052A22E |. 50 push eax
0052A22F |. 8D55 F4 lea edx, [ebp-C]
0052A232 |. 8B83 00030000 mov eax, [ebx+300]
0052A238 |. E8 D7D6F2FF call 00457914
0052A23D |. 8B45 F4 mov eax, [ebp-C]
0052A240 |. 8D4D F8 lea ecx, [ebp-8]
0052A243 |. BA 08A45200 mov edx, 0052A408 ; james
0052A248 |. E8 DFF6FFFF call 0052992C ; 注册算法(以机器码为准)
0052A24D |. 8B55 F8 mov edx, [ebp-8] ; 注册码(ASCII "A892B986ADAC89B58ADE63F62B0D2B")
0052A250 |. 58 pop eax
0052A251 |. E8 7AA5EDFF call 004047D0 ; 内存注册器
0052A256 |. 74 4A je short 0052A2A2 ; 真假码比较,相等就跳
0052A258 |. 8D55 F0 lea edx, [ebp-10]
0052A25B |. 8B83 08030000 mov eax, [ebx+308]
0052A261 |. E8 AED6F2FF call 00457914
0052A266 |. 8B45 F0 mov eax, [ebp-10]
0052A269 |. 50 push eax
0052A26A |. E8 950CEEFF call 0040AF04
0052A26F |. 83C4 F8 add esp, -8 ; /
0052A272 |. DD1C24 fstp qword ptr [esp] ; |Arg1 (8 字节)
0052A275 |. 9B wait ; |
0052A276 |. 8D55 E8 lea edx, [ebp-18] ; |
0052A279 |. B8 18A45200 mov eax, 0052A418 ; |yyyymmdd
0052A27E |. E8 FD18EEFF call 0040BB80 ; \机动车模.0040BB80
0052A283 |. 8B45 E8 mov eax, [ebp-18]
0052A286 |. 8D4D EC lea ecx, [ebp-14]
0052A289 |. BA 2CA45200 mov edx, 0052A42C ; specialreg
0052A28E |. E8 99F6FFFF call 0052992C ; 注册算法(以日期为准)
0052A293 |. 8B55 EC mov edx, [ebp-14] ; 注册码(ASCII "A8A9A9BC90A9BF9DBC")
0052A296 |. 58 pop eax
0052A297 |. E8 34A5EDFF call 004047D0
0052A29C 0F85 D8000000 jnz 0052A37A
0052A2A2 |> B8 40A45200 mov eax, 0052A440 ; 注册成功!感谢您的使用!
0052A2A7 |. E8 F8E1F0FF call 004384A4
0052A2AC |. 68 60A45200 push 0052A460 ; y
0052A2B1 |. B9 6CA45200 mov ecx, 0052A46C ; isreg
0052A2B6 |. BA 7CA45200 mov edx, 0052A47C ; register
0052A2BB |. 8B83 20030000 mov eax, [ebx+320]
0052A2C1 |. 8B30 mov esi, [eax]
0052A2C3 |. FF56 04 call [esi+4]
0052A2C6 |. 8D55 E4 lea edx, [ebp-1C]
0052A2C9 |. 8B83 08030000 mov eax, [ebx+308]
0052A2CF |. E8 40D6F2FF call 00457914
0052A2D4 |. 8B45 E4 mov eax, [ebp-1C]
0052A2D7 |. 50 push eax
0052A2D8 |. B9 90A45200 mov ecx, 0052A490 ; regcode
0052A2DD |. BA 7CA45200 mov edx, 0052A47C ; register
0052A2E2 |. 8B83 20030000 mov eax, [ebx+320]
0052A2E8 |. 8B30 mov esi, [eax]
0052A2EA |. FF56 04 call [esi+4]
0052A2ED |. 8B0D F0E85200 mov ecx, [52E8F0] ; 机动车模.005448B0
0052A2F3 |. A1 4CE85200 mov eax, [52E84C]
0052A2F8 |. 8B00 mov eax, [eax]
0052A2FA |. 8B15 34275200 mov edx, [522734] ; 机动车模.00522780
0052A300 |. E8 B3D3F4FF call 004776B8
0052A305 |. A1 F0E85200 mov eax, [52E8F0]
0052A30A |. 8B00 mov eax, [eax]
0052A30C |. E8 8F9EF4FF call 004741A0
0052A311 |. 8BC3 mov eax, ebx
0052A313 |. E8 809EF4FF call 00474198
0052A318 |. 8D55 E0 lea edx, [ebp-20]
0052A31B |. 8B83 08030000 mov eax, [ebx+308]
0052A321 |. E8 EED5F2FF call 00457914
0052A326 |. 8B45 E0 mov eax, [ebp-20]
0052A329 |. 50 push eax
0052A32A |. E8 D50BEEFF call 0040AF04
0052A32F |. 83C4 F8 add esp, -8 ; /
0052A332 |. DD1C24 fstp qword ptr [esp] ; |Arg1 (8 字节)
0052A335 |. 9B wait ; |
0052A336 |. 8D55 D8 lea edx, [ebp-28] ; |
0052A339 |. B8 18A45200 mov eax, 0052A418 ; |yyyymmdd
0052A33E |. E8 3D18EEFF call 0040BB80 ; \机动车模.0040BB80
0052A343 |. 8B45 D8 mov eax, [ebp-28]
0052A346 |. 8D4D DC lea ecx, [ebp-24]
0052A349 |. BA 2CA45200 mov edx, 0052A42C ; specialreg
0052A34E |. E8 D9F5FFFF call 0052992C
0052A353 |. 8B55 DC mov edx, [ebp-24]
0052A356 |. 58 pop eax
0052A357 |. E8 74A4EDFF call 004047D0
0052A35C |. 75 41 jnz short 0052A39F
0052A35E |. 68 08A45200 push 0052A408 ; james
0052A363 |. B9 90A45200 mov ecx, 0052A490 ; regcode
0052A368 |. BA 7CA45200 mov edx, 0052A47C ; register
0052A36D |. 8B83 20030000 mov eax, [ebx+320]
0052A373 |. 8B18 mov ebx, [eax]
0052A375 |. FF53 04 call [ebx+4]
0052A378 |. EB 25 jmp short 0052A39F
0052A37A |> B8 A0A45200 mov eax, 0052A4A0 ; 注册失败!
0052A37F |. E8 20E1F0FF call 004384A4
0052A384 |. FF83 34030000 inc dword ptr [ebx+334]
0052A38A |. 83BB 34030000>cmp dword ptr [ebx+334], 3
0052A391 |. 7C 0C jl short 0052A39F
0052A393 |. A1 4CE85200 mov eax, [52E84C]
0052A398 |. 8B00 mov eax, [eax]
0052A39A |. E8 85D4F4FF call 00477824
0052A39F |> 33C0 xor eax, eax
0052A3A1 |. 5A pop edx
0052A3A2 |. 59 pop ecx
0052A3A3 |. 59 pop ecx
0052A3A4 |. 64:8910 mov fs:[eax], edx
0052A3A7 |. 68 F8A35200 push 0052A3F8
0052A3AC |> 8D45 D8 lea eax, [ebp-28]
0052A3AF |. BA 02000000 mov edx, 2
0052A3B4 |. E8 2FA0EDFF call 004043E8
0052A3B9 |. 8D45 E0 lea eax, [ebp-20]
0052A3BC |. BA 02000000 mov edx, 2
0052A3C1 |. E8 22A0EDFF call 004043E8
0052A3C6 |. 8D45 E8 lea eax, [ebp-18]
0052A3C9 |. BA 02000000 mov edx, 2
0052A3CE |. E8 15A0EDFF call 004043E8
0052A3D3 |. 8D45 F0 lea eax, [ebp-10]
0052A3D6 |. BA 02000000 mov edx, 2
0052A3DB |. E8 08A0EDFF call 004043E8
0052A3E0 |. 8D45 F8 lea eax, [ebp-8]
0052A3E3 |. E8 DC9FEDFF call 004043C4
0052A3E8 |. 8D45 FC lea eax, [ebp-4]
0052A3EB |. E8 D49FEDFF call 004043C4
0052A3F0 \. C3 retn
0052A3F1 .^ E9 F298EDFF jmp 00403CE8
0052A3F6 .^ EB B4 jmp short 0052A3AC
0052A3F8 . 5E pop esi
0052A3F9 . 5B pop ebx
0052A3FA . 8BE5 mov esp, ebp
0052A3FC . 5D pop ebp
0052A3FD . C3 retn
=========== 0052A248 |. E8 DFF6FFFF call 0052992C ==========
0052992C /$ 55 push ebp ; --》来到这里
0052992D |. 8BEC mov ebp, esp
0052992F |. 83C4 DC add esp, -24
00529932 |. 53 push ebx
00529933 |. 56 push esi
00529934 |. 57 push edi
00529935 |. 33DB xor ebx, ebx
00529937 |. 895D DC mov [ebp-24], ebx
0052993A |. 895D EC mov [ebp-14], ebx
0052993D |. 894D F4 mov [ebp-C], ecx
00529940 |. 8955 F8 mov [ebp-8], edx ; ASCII "james"
00529943 |. 8945 FC mov [ebp-4], eax ; 机器码(ASCII "PF2B27K2119S5A")
00529946 |. 8B45 FC mov eax, [ebp-4]
00529949 |. E8 26AFEDFF call 00404874
0052994E |. 8B45 F8 mov eax, [ebp-8] ; ASCII "james"
00529951 |. E8 1EAFEDFF call 00404874
00529956 |. 33C0 xor eax, eax
00529958 |. 55 push ebp
00529959 |. 68 479A5200 push 00529A47
0052995E |. 64:FF30 push dword ptr fs:[eax]
00529961 |. 64:8920 mov fs:[eax], esp
00529964 |. 8B45 F8 mov eax, [ebp-8]
00529967 |. E8 18ADEDFF call 00404684
0052996C |. 8945 F0 mov [ebp-10], eax
0052996F |. 837D F0 00 cmp dword ptr [ebp-10], 0
00529973 |. 75 0D jnz short 00529982
00529975 |. 8D45 F8 lea eax, [ebp-8]
00529978 |. BA 609A5200 mov edx, 00529A60 ; think space
0052997D |. E8 DAAAEDFF call 0040445C
00529982 |> 33F6 xor esi, esi
00529984 |. BB A8000000 mov ebx, 0A8 ; 常量A8赋给EBX,这里指初始值
00529989 |. 8D45 EC lea eax, [ebp-14]
0052998C |. 50 push eax ; /Arg1
0052998D |. 895D E0 mov [ebp-20], ebx ; |
00529990 |. C645 E4 00 mov byte ptr [ebp-1C], 0 ; |
00529994 |. 8D55 E0 lea edx, [ebp-20] ; |
00529997 |. 33C9 xor ecx, ecx ; |
00529999 |. B8 749A5200 mov eax, 00529A74 ; |%1.2x
0052999E |. E8 2904EEFF call 00409DCC ; \机动车模.00409DCC
005299A3 |. 8B45 FC mov eax, [ebp-4]
005299A6 |. E8 D9ACEDFF call 00404684
005299AB |. 8BF8 mov edi, eax
005299AD |. 85FF test edi, edi
005299AF |. 7E 60 jle short 00529A11
005299B1 |. C745 E8 01000>mov dword ptr [ebp-18], 1
005299B8 |> 8B45 FC /mov eax, [ebp-4] ; / 算法开始
005299BB |. 8B55 E8 |mov edx, [ebp-18]
005299BE |. 0FB64410 FF |movzx eax, byte ptr [eax+edx-1]
005299C3 |. 03C3 |add eax, ebx ; EAX=EAX+EBX
005299C5 |. B9 FF000000 |mov ecx, 0FF
005299CA |. 99 |cdq
005299CB |. F7F9 |idiv ecx
005299CD |. 8BDA |mov ebx, edx
005299CF |. 3B75 F0 |cmp esi, [ebp-10]
005299D2 |. 7D 03 |jge short 005299D7
005299D4 |. 46 |inc esi
005299D5 |. EB 05 |jmp short 005299DC
005299D7 |> BE 01000000 |mov esi, 1
005299DC |> 8B45 F8 |mov eax, [ebp-8]
005299DF |. 0FB64430 FF |movzx eax, byte ptr [eax+esi-1]
005299E4 |. 33D8 |xor ebx, eax ; EBX=XOR(EBX,EAX),对应于机器码各字符[常量"james"长度以不足就循环取]
005299E6 |. 8D45 DC |lea eax, [ebp-24]
005299E9 |. 50 |push eax ; /Arg1
005299EA |. 895D E0 |mov [ebp-20], ebx ; |
005299ED |. C645 E4 00 |mov byte ptr [ebp-1C], 0 ; |
005299F1 |. 8D55 E0 |lea edx, [ebp-20] ; |
005299F4 |. 33C9 |xor ecx, ecx ; |
005299F6 |. B8 749A5200 |mov eax, 00529A74 ; |%1.2x
005299FB |. E8 CC03EEFF |call 00409DCC ; \机动车模.00409DCC
00529A00 |. 8B55 DC |mov edx, [ebp-24] ; 新的字串赋给EDX
00529A03 |. 8D45 EC |lea eax, [ebp-14]
00529A06 |. E8 81ACEDFF |call 0040468C ; 进行连接
00529A0B |. FF45 E8 |inc dword ptr [ebp-18]
00529A0E |. 4F |dec edi
00529A0F |.^ 75 A7 \jnz short 005299B8 ; \ 循环
00529A11 |> 8B45 F4 mov eax, [ebp-C]
00529A14 |. 8B55 EC mov edx, [ebp-14] ; (ASCII "A892B986ADAC89B58ADE63F62B0D2B")
00529A17 |. E8 FCA9EDFF call 00404418
00529A1C |. 33C0 xor eax, eax
00529A1E |. 5A pop edx
00529A1F |. 59 pop ecx
00529A20 |. 59 pop ecx
00529A21 |. 64:8910 mov fs:[eax], edx
00529A24 |. 68 4E9A5200 push 00529A4E
00529A29 |> 8D45 DC lea eax, [ebp-24]
00529A2C |. E8 93A9EDFF call 004043C4
00529A31 |. 8D45 EC lea eax, [ebp-14]
00529A34 |. E8 8BA9EDFF call 004043C4
00529A39 |. 8D45 F8 lea eax, [ebp-8]
00529A3C |. BA 02000000 mov edx, 2
00529A41 |. E8 A2A9EDFF call 004043E8
00529A46 \. C3 retn
00529A47 .^ E9 9CA2EDFF jmp 00403CE8
00529A4C .^ EB DB jmp short 00529A29
00529A4E . 5F pop edi
00529A4F . 5E pop esi
00529A50 . 5B pop ebx
00529A51 . 8BE5 mov esp, ebp
00529A53 . 5D pop ebp
00529A54 . C3 retn
明码比较,看程式,那两个注册码都有用。
------------------------------------------------------------------------
【破解总结】
照例还是要做点分析的:
一、这里以与机器码有关的注册码为列
1、令机器码为A,常量james为B;
2、分别取A、B的各字符16进制进行运算生成新的字串;;
Di=Ai+Bi(Ai = 分别为A的各字符的16进制,从左至右;Bi初始值为A8)
Ki=XOR(Bi,Di)[Bi=分别为为B的各字符的16进制;相对于A,B长度不够就循环,直到A取完止]
3、注册码K=K0+K1+K2+...+Ki (i=相对于A的位数,从0开始;这里的“+”为连接符)
注册成功后,把注册信息写入c:\windows\win.ini里,REGCODE = 注册码
二、如以时间为例,算法相同。
1、把机器码换成了日期(日期格式为:20070522),常量变成了specialreg;
2、长度以specialreg为准,日期长度不足就循环。
注册成功后, 把注册信息写入c:\windows\win.ini里,REGCODE = james;也就是说“james” 是注同标志,不管注册码是什么,只要REGCODE = james ,就注册成功了。
从代码分析得知,K0=A8,就是说注册码是以A8开头的。
下面是win.ini里的一段代码,
[REGISTER]
REGID=PF2B27K2119S5A [硬件号]
ISREG=Y
RUNTIME=5 [使用次数]
REGCODE=james [注册标志]
下面是与日期相关的几组注册码
日 期:20070522
注册码:A8A9A9BC90A9BF9DBD
日 期:20070521
注册码:A8A9A9BC90A9BF9DBC
日 期:20070523
注册码:A8A9A9BC90A9BF9DA2
------------------------------------------------------------------------
【版权声明】本文纯属技术交流, 转载请注明作者信息并保持文章的完整, 谢谢! |
|