曙光驾驶员理论考试系统2007 解码分析
【破文标题】曙光驾驶员理论考试系统2007 解码分析【破文作者】lzq1973
【作者邮箱】[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:
0052A21A|.64:8920 mov fs:, esp
0052A21D|.8D55 FC lea edx,
0052A220|.8B83 08030000 mov eax,
0052A226|.E8 E9D6F2FF call 00457914
0052A22B|.8B45 FC mov eax,
0052A22E|.50 push eax
0052A22F|.8D55 F4 lea edx,
0052A232|.8B83 00030000 mov eax,
0052A238|.E8 D7D6F2FF call 00457914
0052A23D|.8B45 F4 mov eax,
0052A240|.8D4D F8 lea ecx,
0052A243|.BA 08A45200 mov edx, 0052A408 ;james
0052A248|.E8 DFF6FFFF call 0052992C ;注册算法(以机器码为准)
0052A24D|.8B55 F8 mov edx, ;注册码(ASCII "A892B986ADAC89B58ADE63F62B0D2B")
0052A250|.58 pop eax
0052A251|.E8 7AA5EDFF call 004047D0 ;内存注册器
0052A256|.74 4A je short 0052A2A2 ;真假码比较,相等就跳
0052A258|.8D55 F0 lea edx,
0052A25B|.8B83 08030000 mov eax,
0052A261|.E8 AED6F2FF call 00457914
0052A266|.8B45 F0 mov eax,
0052A269|.50 push eax
0052A26A|.E8 950CEEFF call 0040AF04
0052A26F|.83C4 F8 add esp, -8 ; /
0052A272|.DD1C24 fstp qword ptr ; |Arg1 (8 字节)
0052A275|.9B wait ; |
0052A276|.8D55 E8 lea edx, ; |
0052A279|.B8 18A45200 mov eax, 0052A418 ; |yyyymmdd
0052A27E|.E8 FD18EEFF call 0040BB80 ; \机动车模.0040BB80
0052A283|.8B45 E8 mov eax,
0052A286|.8D4D EC lea ecx,
0052A289|.BA 2CA45200 mov edx, 0052A42C ;specialreg
0052A28E|.E8 99F6FFFF call 0052992C ;注册算法(以日期为准)
0052A293|.8B55 EC mov edx, ;注册码(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,
0052A2C1|.8B30 mov esi,
0052A2C3|.FF56 04 call
0052A2C6|.8D55 E4 lea edx,
0052A2C9|.8B83 08030000 mov eax,
0052A2CF|.E8 40D6F2FF call 00457914
0052A2D4|.8B45 E4 mov eax,
0052A2D7|.50 push eax
0052A2D8|.B9 90A45200 mov ecx, 0052A490 ;regcode
0052A2DD|.BA 7CA45200 mov edx, 0052A47C ;register
0052A2E2|.8B83 20030000 mov eax,
0052A2E8|.8B30 mov esi,
0052A2EA|.FF56 04 call
0052A2ED|.8B0D F0E85200 mov ecx, ;机动车模.005448B0
0052A2F3|.A1 4CE85200 mov eax,
0052A2F8|.8B00 mov eax,
0052A2FA|.8B15 34275200 mov edx, ;机动车模.00522780
0052A300|.E8 B3D3F4FF call 004776B8
0052A305|.A1 F0E85200 mov eax,
0052A30A|.8B00 mov eax,
0052A30C|.E8 8F9EF4FF call 004741A0
0052A311|.8BC3 mov eax, ebx
0052A313|.E8 809EF4FF call 00474198
0052A318|.8D55 E0 lea edx,
0052A31B|.8B83 08030000 mov eax,
0052A321|.E8 EED5F2FF call 00457914
0052A326|.8B45 E0 mov eax,
0052A329|.50 push eax
0052A32A|.E8 D50BEEFF call 0040AF04
0052A32F|.83C4 F8 add esp, -8 ; /
0052A332|.DD1C24 fstp qword ptr ; |Arg1 (8 字节)
0052A335|.9B wait ; |
0052A336|.8D55 D8 lea edx, ; |
0052A339|.B8 18A45200 mov eax, 0052A418 ; |yyyymmdd
0052A33E|.E8 3D18EEFF call 0040BB80 ; \机动车模.0040BB80
0052A343|.8B45 D8 mov eax,
0052A346|.8D4D DC lea ecx,
0052A349|.BA 2CA45200 mov edx, 0052A42C ;specialreg
0052A34E|.E8 D9F5FFFF call 0052992C
0052A353|.8B55 DC mov edx,
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,
0052A373|.8B18 mov ebx,
0052A375|.FF53 04 call
0052A378|.EB 25 jmp short 0052A39F
0052A37A|>B8 A0A45200 mov eax, 0052A4A0 ;注册失败!
0052A37F|.E8 20E1F0FF call 004384A4
0052A384|.FF83 34030000 inc dword ptr
0052A38A|.83BB 34030000>cmp dword ptr , 3
0052A391|.7C 0C jl short 0052A39F
0052A393|.A1 4CE85200 mov eax,
0052A398|.8B00 mov 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:, edx
0052A3A7|.68 F8A35200 push 0052A3F8
0052A3AC|>8D45 D8 lea eax,
0052A3AF|.BA 02000000 mov edx, 2
0052A3B4|.E8 2FA0EDFF call 004043E8
0052A3B9|.8D45 E0 lea eax,
0052A3BC|.BA 02000000 mov edx, 2
0052A3C1|.E8 22A0EDFF call 004043E8
0052A3C6|.8D45 E8 lea eax,
0052A3C9|.BA 02000000 mov edx, 2
0052A3CE|.E8 15A0EDFF call 004043E8
0052A3D3|.8D45 F0 lea eax,
0052A3D6|.BA 02000000 mov edx, 2
0052A3DB|.E8 08A0EDFF call 004043E8
0052A3E0|.8D45 F8 lea eax,
0052A3E3|.E8 DC9FEDFF call 004043C4
0052A3E8|.8D45 FC lea eax,
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 , ebx
0052993A|.895D EC mov , ebx
0052993D|.894D F4 mov , ecx
00529940|.8955 F8 mov , edx ; ASCII "james"
00529943|.8945 FC mov , eax ;机器码(ASCII "PF2B27K2119S5A")
00529946|.8B45 FC mov eax,
00529949|.E8 26AFEDFF call 00404874
0052994E|.8B45 F8 mov eax, ; 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:
00529961|.64:8920 mov fs:, esp
00529964|.8B45 F8 mov eax,
00529967|.E8 18ADEDFF call 00404684
0052996C|.8945 F0 mov , eax
0052996F|.837D F0 00 cmp dword ptr , 0
00529973|.75 0D jnz short 00529982
00529975|.8D45 F8 lea eax,
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,
0052998C|.50 push eax ; /Arg1
0052998D|.895D E0 mov , ebx ; |
00529990|.C645 E4 00 mov byte ptr , 0 ; |
00529994|.8D55 E0 lea edx, ; |
00529997|.33C9 xor ecx, ecx ; |
00529999|.B8 749A5200 mov eax, 00529A74 ; |%1.2x
0052999E|.E8 2904EEFF call 00409DCC ; \机动车模.00409DCC
005299A3|.8B45 FC mov eax,
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 , 1
005299B8|>8B45 FC /mov eax, ; / 算法开始
005299BB|.8B55 E8 |mov edx,
005299BE|.0FB64410 FF |movzx eax, byte ptr
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,
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,
005299DF|.0FB64430 FF |movzx eax, byte ptr
005299E4|.33D8 |xor ebx, eax ;EBX=XOR(EBX,EAX),对应于机器码各字符[常量"james"长度以不足就循环取]
005299E6|.8D45 DC |lea eax,
005299E9|.50 |push eax ; /Arg1
005299EA|.895D E0 |mov , ebx ; |
005299ED|.C645 E4 00 |mov byte ptr , 0 ; |
005299F1|.8D55 E0 |lea edx, ; |
005299F4|.33C9 |xor ecx, ecx ; |
005299F6|.B8 749A5200 |mov eax, 00529A74 ; |%1.2x
005299FB|.E8 CC03EEFF |call 00409DCC ; \机动车模.00409DCC
00529A00|.8B55 DC |mov edx, ;新的字串赋给EDX
00529A03|.8D45 EC |lea eax,
00529A06|.E8 81ACEDFF |call 0040468C ;进行连接
00529A0B|.FF45 E8 |inc dword ptr
00529A0E|.4F |dec edi
00529A0F|.^ 75 A7 \jnz short 005299B8 ;\ 循环
00529A11|>8B45 F4 mov eax,
00529A14|.8B55 EC mov edx, ;(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:, edx
00529A24|.68 4E9A5200 push 00529A4E
00529A29|>8D45 DC lea eax,
00529A2C|.E8 93A9EDFF call 004043C4
00529A31|.8D45 EC lea eax,
00529A34|.E8 8BA9EDFF call 004043C4
00529A39|.8D45 F8 lea eax,
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)
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里的一段代码,
REGID=PF2B27K2119S5A [硬件号]
ISREG=Y
RUNTIME=5 [使用次数]
REGCODE=james [注册标志]
下面是与日期相关的几组注册码
日期:20070522
注册码:A8A9A9BC90A9BF9DBD
日期:20070521
注册码:A8A9A9BC90A9BF9DBC
日期:20070523
注册码:A8A9A9BC90A9BF9DA2
------------------------------------------------------------------------
【版权声明】本文纯属技术交流, 转载请注明作者信息并保持文章的完整, 谢谢! 楼主厉害了 呵呵 支持下 /:09 下载学习一下 好文,收藏起来慢慢研究 ......我下了 软件 想自己调试........变成重启验证 谢谢楼主收藏学习/:014 /:014
页:
[1]