lzq1973 发表于 2007-6-5 08:21:46

曙光驾驶员理论考试系统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

------------------------------------------------------------------------
【版权声明】本文纯属技术交流, 转载请注明作者信息并保持文章的完整, 谢谢!

千里之外 发表于 2007-6-5 08:46:35

楼主厉害了 呵呵 支持下 /:09

bhcjl 发表于 2007-6-9 15:58:42

下载学习一下

yjz1409276 发表于 2007-6-12 01:04:34

好文,收藏起来慢慢研究

xhn1002 发表于 2007-8-21 08:33:58

......我下了 软件 想自己调试........变成重启验证

jlbsljwhy 发表于 2007-8-26 06:34:35

谢谢楼主收藏学习/:014 /:014
页: [1]
查看完整版本: 曙光驾驶员理论考试系统2007 解码分析