飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3189|回复: 5

[原创] 曙光驾驶员理论考试系统2007 解码分析

[复制链接]
  • TA的每日心情
    慵懒
    2019-1-18 17:27
  • 签到天数: 30 天

    [LV.5]常住居民I

    发表于 2007-6-5 08:21:46 | 显示全部楼层 |阅读模式
    【破文标题】曙光驾驶员理论考试系统2007 解码分析
    【破文作者】lzq1973[PYG][CZG][OCN][DFCG]
    【作者邮箱】lzq9888@126.com
    【作者主页】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

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

    该用户从未签到

    发表于 2007-6-5 08:46:35 | 显示全部楼层
    楼主厉害了 呵呵 支持下 /:09
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-5-4 22:08
  • 签到天数: 114 天

    [LV.6]常住居民II

    发表于 2007-6-9 15:58:42 | 显示全部楼层
    下载学习一下
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-6-12 01:04:34 | 显示全部楼层
    好文,收藏起来慢慢研究
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-8-21 08:33:58 | 显示全部楼层
    ......我下了 软件 想自己调试........变成重启验证
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-8-26 06:34:35 | 显示全部楼层
    谢谢楼主收藏学习/:014 /:014
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表