【破文标题】老顽童汽车租赁管理 V3.03注册算法
【破文作者】XXNB
【作者邮箱】学习算法为了写出更好的算法
【作者主页】http://free.ys168.com/?binbinbin7456
【破解工具】OD
【破解平台】xpsp2
【软件名称】老顽童汽车租赁管理 V3.03
【软件大小】4338 KB
【原版下载】http://www.skycn.com/soft/25722.html
【保护方式】注册码
【软件简介】本软件是针对国内汽车租赁企业策划的软件,软件界面简单,操作方便。
此次升级添加了即时的视频录制功能,能即时的录制下租赁者的言行举止,进一步保证租赁行业的安全性。

软件有两个记算费用模式,适合大多数地区的管理模式
有损坏车辆零部件价格查询
自定义网络查询违章按扭
自定义网络身份查询按扭
违章押金等更多功能。
【破解声明】向大侠们学习!!!只为学习!请尊重作者的劳动成功!
------------------------------------------------------------------------
【破解过程】

      这个软件保护得比较好(我这么认为,比我厉害多了),非常希望能有作者的编程水平。
     
      刚用OD载入的时候字符串搜索是找不到东西的。只有让程序跑起来后,它的所有字符串都现型了。然后我们可以用看雪主页上的易语言

反编译软件轻松找到“注册”按钮的事件。得到下面的代码:


0058F67D    55              push    ebp
0058F67E    8BEC            mov     ebp, esp
0058F680    81EC 14000000   sub     esp, 14
0058F686    68 0C000000     push    0C
0058F68B    E8 8FC30000     call    0059BA1F
0058F690    83C4 04         add     esp, 4
0058F693    8945 FC         mov     dword ptr [ebp-4], eax
0058F696    8BF8            mov     edi, eax
0058F698    BE 6CA74000     mov     esi, 0040A76C
0058F69D    AD              lods    dword ptr [esi]
0058F69E    AB              stos    dword ptr es:[edi]
0058F69F    AD              lods    dword ptr [esi]
0058F6A0    AB              stos    dword ptr es:[edi]
0058F6A1    8BDF            mov     ebx, edi
0058F6A3    B9 01000000     mov     ecx, 1
0058F6A8    51              push    ecx
0058F6A9    53              push    ebx
0058F6AA    68 0C000000     push    0C
0058F6AF    E8 6BC30000     call    0059BA1F
0058F6B4    83C4 04         add     esp, 4
0058F6B7    5B              pop     ebx
0058F6B8    53              push    ebx
0058F6B9    8903            mov     dword ptr [ebx], eax
0058F6BB    8BD8            mov     ebx, eax
0058F6BD    C703 00000000   mov     dword ptr [ebx], 0
0058F6C3    C743 04 0000000>mov     dword ptr [ebx+4], 0
0058F6CA    C743 08 0000000>mov     dword ptr [ebx+8], 0
0058F6D1    83C3 08         add     ebx, 8
0058F6D4    B8 14000000     mov     eax, 14
0058F6D9    8903            mov     dword ptr [ebx], eax
0058F6DB    5B              pop     ebx
0058F6DC    59              pop     ecx
0058F6DD    83C3 04         add     ebx, 4
0058F6E0    49              dec     ecx
0058F6E1  ^ 75 C5           jnz     short 0058F6A8
0058F6E3    6A FF           push    -1
0058F6E5    6A 08           push    8
0058F6E7    68 520B0116     push    16010B52
0058F6EC    68 4F0B0152     push    52010B4F
0058F6F1    E8 41C30000     call    0059BA37
0058F6F6    83C4 10         add     esp, 10
0058F6F9    8945 F8         mov     dword ptr [ebp-8], eax           ; 假码出现了
0058F6FC    68 01030080     push    80000301
0058F701    6A 00           push    0
0058F703    68 01000000     push    1
0058F708    68 04000080     push    80000004
0058F70D    6A 00           push    0
0058F70F    8B45 F8         mov     eax, dword ptr [ebp-8]
0058F712    85C0            test    eax, eax
0058F714    75 05           jnz     short 0058F71B
0058F716    B8 E4614000     mov     eax, 004061E4
0058F71B    50              push    eax
0058F71C    68 02000000     push    2
0058F721    BB 38010000     mov     ebx, 138
0058F726    E8 FAC20000     call    0059BA25                         ; 这个call
0058F72B    83C4 1C         add     esp, 1C
0058F72E    8945 F4         mov     dword ptr [ebp-C], eax
0058F731    8B5D F8         mov     ebx, dword ptr [ebp-8]
0058F734    85DB            test    ebx, ebx
0058F736    74 09           je      short 0058F741
0058F738    53              push    ebx
0058F739    E8 DBC20000     call    0059BA19                         ; 这个
0058F73E    83C4 04         add     esp, 4
0058F741    68 2FA74000     push    0040A72F                         ; t
0058F746    FF75 F4         push    dword ptr [ebp-C]
0058F749    E8 5D1AFFFF     call    005811AB                         ; no
0058F74E    83C4 08         add     esp, 8
0058F751    83F8 00         cmp     eax, 0
0058F754    B8 00000000     mov     eax, 0
0058F759    0F95C0          setne   al
0058F75C    8945 F0         mov     dword ptr [ebp-10], eax
0058F75F    8B5D F4         mov     ebx, dword ptr [ebp-C]
0058F762    85DB            test    ebx, ebx
0058F764    74 09           je      short 0058F76F
0058F766    53              push    ebx
0058F767    E8 ADC20000     call    0059BA19                         ; 2
0058F76C    83C4 04         add     esp, 4
0058F76F    837D F0 00      cmp     dword ptr [ebp-10], 0
0058F773    0F84 3B000000   je      0058F7B4                         ; 这里是关键跳了。
0058F779    68 04000080     push    80000004
0058F77E    6A 00           push    0
0058F780    68 DB624000     push    004062DB                         ; 老顽童
0058F785    68 01030080     push    80000301
0058F78A    6A 00           push    0
0058F78C    68 40000000     push    40
0058F791    68 04000080     push    80000004
0058F796    6A 00           push    0
0058F798    68 31A74000     push    0040A731                         ; 您输入的注册码不正确
0058F79D    68 03000000     push    3
0058F7A2    BB 00030000     mov     ebx, 300
0058F7A7    E8 79C20000     call    0059BA25
0058F7AC    83C4 28         add     esp, 28
0058F7AF    E9 EA020000     jmp     0058FA9E
0058F7B4    8B5D FC         mov     ebx, dword ptr [ebp-4]
0058F7B7    E8 7420FFFF     call    00581830
0058F7BC    B8 00000000     mov     eax, 0
0058F7C1    3BC1            cmp     eax, ecx
0058F7C3    7C 0D           jl      short 0058F7D2
0058F7C5    68 01000000     push    1
0058F7CA    E8 62C20000     call    0059BA31
0058F7CF    83C4 04         add     esp, 4
0058F7D2    C1E0 02         shl     eax, 2
0058F7D5    03D8            add     ebx, eax
0058F7D7    8B1B            mov     ebx, dword ptr [ebx]
0058F7D9    895D F8         mov     dword ptr [ebp-8], ebx
0058F7DC    B8 2E634000     mov     eax, 0040632E                    ; 注册码
0058F7E1    50              push    eax
0058F7E2    8B5D F8         mov     ebx, dword ptr [ebp-8]
0058F7E5    8B1B            mov     ebx, dword ptr [ebx]
0058F7E7    85DB            test    ebx, ebx
0058F7E9    74 09           je      short 0058F7F4
0058F7EB    53              push    ebx
0058F7EC    E8 28C20000     call    0059BA19
0058F7F1    83C4 04         add     esp, 4
0058F7F4    58              pop     eax
0058F7F5    8B5D F8         mov     ebx, dword ptr [ebp-8]
0058F7F8    8903            mov     dword ptr [ebx], eax
0058F7FA    8B5D FC         mov     ebx, dword ptr [ebp-4]
0058F7FD    E8 2E20FFFF     call    00581830
0058F802    B8 00000000     mov     eax, 0
0058F807    3BC1            cmp     eax, ecx
0058F809    7C 0D           jl      short 0058F818
0058F80B    68 01000000     push    1
0058F810    E8 1CC20000     call    0059BA31
0058F815    83C4 04         add     esp, 4
0058F818    C1E0 02         shl     eax, 2
0058F81B    03D8            add     ebx, eax
0058F81D    8B1B            mov     ebx, dword ptr [ebx]
0058F81F    83C3 04         add     ebx, 4
0058F822    895D F8         mov     dword ptr [ebp-8], ebx
0058F825    8B5D F8         mov     ebx, dword ptr [ebp-8]
0058F828    C703 0B000000   mov     dword ptr [ebx], 0B
0058F82E    68 00000000     push    0
0058F833    BB 04010000     mov     ebx, 104
0058F838    E8 E8C10000     call    0059BA25
0058F83D    83C4 04         add     esp, 4
0058F840    8945 F8         mov     dword ptr [ebp-8], eax
0058F843    68 15634000     push    00406315                         ; \zcsjk.lwt   这个文件。我就是找不到在哪里!
0058F848    FF75 F8         push    dword ptr [ebp-8]                ;非常佩服作者能藏这么好,
0058F84B    B9 02000000     mov     ecx, 2                           ;也许是临时的隐藏文件。
0058F850    E8 5E1AFFFF     call    005812B3
0058F855    83C4 08         add     esp, 8
0058F858    8945 F4         mov     dword ptr [ebp-C], eax
0058F85B    8B5D F8         mov     ebx, dword ptr [ebp-8]
0058F85E    85DB            test    ebx, ebx
0058F860    74 09           je      short 0058F86B
0058F862    53              push    ebx
0058F863    E8 B1C10000     call    0059BA19
0058F868    83C4 04         add     esp, 4
0058F86B    68 22000100     push    10022                            ; UNICODE ":\Documents and Settings\All Users"
0058F870    6A 00           push    0
0058F872    FF75 FC         push    dword ptr [ebp-4]
0058F875    68 04000080     push    80000004
0058F87A    6A 00           push    0
0058F87C    8B45 F4         mov     eax, dword ptr [ebp-C]
0058F87F    85C0            test    eax, eax
0058F881    75 05           jnz     short 0058F888
0058F883    B8 E4614000     mov     eax, 004061E4
0058F888    50              push    eax
0058F889    68 02000000     push    2
0058F88E    BB 4C050000     mov     ebx, 54C
0058F893    E8 8DC10000     call    0059BA25
0058F898    83C4 1C         add     esp, 1C
0058F89B    8B5D F4         mov     ebx, dword ptr [ebp-C]
0058F89E    85DB            test    ebx, ebx
0058F8A0    74 09           je      short 0058F8AB
0058F8A2    53              push    ebx
0058F8A3    E8 71C10000     call    0059BA19
0058F8A8    83C4 04         add     esp, 4
0058F8AB    68 00000000     push    0
0058F8B0    BB 04010000     mov     ebx, 104
0058F8B5    E8 6BC10000     call    0059BA25
0058F8BA    83C4 04         add     esp, 4
0058F8BD    8945 F8         mov     dword ptr [ebp-8], eax
0058F8C0    68 15634000     push    00406315                         ; \zcsjk.lwt
0058F8C5    FF75 F8         push    dword ptr [ebp-8]
0058F8C8    B9 02000000     mov     ecx, 2
0058F8CD    E8 E119FFFF     call    005812B3
0058F8D2    83C4 08         add     esp, 8
0058F8D5    8945 F4         mov     dword ptr [ebp-C], eax
0058F8D8    8B5D F8         mov     ebx, dword ptr [ebp-8]
0058F8DB    85DB            test    ebx, ebx
0058F8DD    74 09           je      short 0058F8E8
0058F8DF    53              push    ebx
0058F8E0    E8 34C10000     call    0059BA19
0058F8E5    83C4 04         add     esp, 4
0058F8E8    BB 0F000000     mov     ebx, 0F
0058F8ED    E8 1D1FFFFF     call    0058180F
0058F8F2    68 04000080     push    80000004
0058F8F7    6A 00           push    0
0058F8F9    68 27634000     push    00406327                         ; 注册库
0058F8FE    68 04000080     push    80000004
0058F903    6A 00           push    0
0058F905    8B45 F4         mov     eax, dword ptr [ebp-C]
0058F908    85C0            test    eax, eax
0058F90A    75 05           jnz     short 0058F911
0058F90C    B8 E4614000     mov     eax, 004061E4
0058F911    50              push    eax
0058F912    68 07000000     push    7
0058F917    BB 50050000     mov     ebx, 550
0058F91C    E8 04C10000     call    0059BA25
0058F921    83C4 58         add     esp, 58
0058F924    8B5D F4         mov     ebx, dword ptr [ebp-C]
0058F927    85DB            test    ebx, ebx
0058F929    74 09           je      short 0058F934
0058F92B    53              push    ebx
0058F92C    E8 E8C00000     call    0059BA19
0058F931    83C4 04         add     esp, 4
0058F934    68 04000080     push    80000004
0058F939    6A 00           push    0
0058F93B    68 27634000     push    00406327                         ; 注册库
0058F940    68 01000000     push    1
0058F945    BB 58050000     mov     ebx, 558
0058F94A    E8 D6C00000     call    0059BA25
0058F94F    83C4 10         add     esp, 10
0058F952    68 04000080     push    80000004
0058F957    6A 00           push    0
0058F959    68 20634000     push    00406320                         ; xjslwt
0058F95E    68 01000000     push    1
0058F963    BB E0080000     mov     ebx, 8E0
0058F968    E8 B8C00000     call    0059BA25
0058F96D    83C4 10         add     esp, 10
0058F970    6A FF           push    -1
0058F972    6A 08           push    8
0058F974    68 520B0116     push    16010B52
0058F979    68 4F0B0152     push    52010B4F
0058F97E    E8 B4C00000     call    0059BA37
0058F983    83C4 10         add     esp, 10
0058F986    8945 F8         mov     dword ptr [ebp-8], eax
0058F989    68 04000080     push    80000004
0058F98E    6A 00           push    0
0058F990    8B45 F8         mov     eax, dword ptr [ebp-8]
0058F993    85C0            test    eax, eax
0058F995    75 05           jnz     short 0058F99C
0058F997    B8 E4614000     mov     eax, 004061E4
0058F99C    50              push    eax
0058F99D    68 01000000     push    1
0058F9A2    BB 98010000     mov     ebx, 198
0058F9A7    E8 79C00000     call    0059BA25
0058F9AC    83C4 10         add     esp, 10
0058F9AF    8945 F4         mov     dword ptr [ebp-C], eax
0058F9B2    8B5D F8         mov     ebx, dword ptr [ebp-8]
0058F9B5    85DB            test    ebx, ebx
0058F9B7    74 09           je      short 0058F9C2
0058F9B9    53              push    ebx
0058F9BA    E8 5AC00000     call    0059BA19
0058F9BF    83C4 04         add     esp, 4
0058F9C2    68 05000080     push    80000005
0058F9C7    6A 00           push    0
0058F9C9    8B45 F4         mov     eax, dword ptr [ebp-C]
0058F9CC    85C0            test    eax, eax
0058F9CE    75 05           jnz     short 0058F9D5
0058F9D0    B8 F2614000     mov     eax, 004061F2
0058F9D5    50              push    eax
0058F9D6    68 01000000     push    1
0058F9DB    BB FC050000     mov     ebx, 5FC
0058F9E0    E8 40C00000     call    0059BA25
0058F9E5    83C4 10         add     esp, 10
0058F9E8    8945 F0         mov     dword ptr [ebp-10], eax
0058F9EB    8B5D F4         mov     ebx, dword ptr [ebp-C]
0058F9EE    85DB            test    ebx, ebx
0058F9F0    74 09           je      short 0058F9FB
0058F9F2    53              push    ebx
0058F9F3    E8 21C00000     call    0059BA19
0058F9F8    83C4 04         add     esp, 4
0058F9FB    837D F0 00      cmp     dword ptr [ebp-10], 0
0058F9FF    0F85 3B000000   jnz     0058FA40
0058FA05    68 04000080     push    80000004
0058FA0A    6A 00           push    0
0058FA0C    68 DB624000     push    004062DB                         ; 老顽童
0058FA11    68 01030080     push    80000301
0058FA16    6A 00           push    0
0058FA18    68 40000000     push    40
0058FA1D    68 04000080     push    80000004
0058FA22    6A 00           push    0
0058FA24    68 46A74000     push    0040A746                         ; 注册失败
0058FA29    68 03000000     push    3
0058FA2E    BB 00030000     mov     ebx, 300
0058FA33    E8 EDBF0000     call    0059BA25
0058FA38    83C4 28         add     esp, 28
0058FA3B    E9 5E000000     jmp     0058FA9E
0058FA40    68 04000080     push    80000004
0058FA45    6A 00           push    0
0058FA47    68 27634000     push    00406327                         ; 注册库
0058FA4C    68 01000000     push    1
0058FA51    BB 60050000     mov     ebx, 560
0058FA56    E8 CABF0000     call    0059BA25
0058FA5B    83C4 10         add     esp, 10
0058FA5E    68 04000080     push    80000004
0058FA63    6A 00           push    0
0058FA65    68 DB624000     push    004062DB                         ; 老顽童
0058FA6A    68 01030080     push    80000301
0058FA6F    6A 00           push    0
0058FA71    68 40000000     push    40
0058FA76    68 04000080     push    80000004
0058FA7B    6A 00           push    0
0058FA7D    68 4FA74000     push    0040A74F                         ; 注册成功,请重新启动本软件。
0058FA82    68 03000000     push    3
0058FA87    BB 00030000     mov     ebx, 300
0058FA8C    E8 94BF0000     call    0059BA25                         ; (Initial CPU selection)


从上面的代码我们看出,根本就没有对我们输入的假码进行运算。也许有,但是以我的水平我就没有发现。所以我猜测它是重启验证的软件。

因为上面出现过一个临时文件“zcsjk.lwt”,虽然我没有找到这个文件放在哪里,但我知道它是关键。

于是,字符串查找zcsjk.lwt。很容易就找到了关键:


00582B66    55              push    ebp
00582B67    8BEC            mov     ebp, esp                         ; (Initial CPU selection)
00582B69    81EC 54000000   sub     esp, 54
00582B6F    C745 FC 0000000>mov     dword ptr [ebp-4], 0
00582B76    68 00000000     push    0
00582B7B    BB 04010000     mov     ebx, 104
00582B80    E8 A08E0100     call    0059BA25
00582B85    83C4 04         add     esp, 4
00582B88    8945 F8         mov     dword ptr [ebp-8], eax
00582B8B    68 15634000     push    00406315                         ; \zcsjk.lwt
00582B90    FF75 F8         push    dword ptr [ebp-8]                ; 读取这个文件
00582B93    B9 02000000     mov     ecx, 2
00582B98    E8 16E7FFFF     call    005812B3

......省略好多代码.....................

然后
00582EAD    85DB            test    ebx, ebx
00582EAF    74 09           je      short 00582EBA
00582EB1    53              push    ebx
00582EB2    E8 628B0100     call    0059BA19
00582EB7    83C4 04         add     esp, 4
00582EBA    837D FC 00      cmp     dword ptr [ebp-4], 0             ; 这里如果你从来没有输入过注册码就会跳走。
00582EBE    0F84 14030000   je      005831D8                         ; 所以,先运行软件输入一次注册码
00582EC4    68 00000000     push    0
00582EC9    BB C4060000     mov     ebx, 6C4                         ; 下面就是对机器码的运算得到注册码的代码
00582ECE    E8 528B0100     call    0059BA25
00582ED3    83C4 04         add     esp, 4
00582ED6    8945 F0         mov     dword ptr [ebp-10], eax
00582ED9    DB45 F0         fild    dword ptr [ebp-10]               ; 机器码转成实数
00582EDC    DD5D F0         fstp    qword ptr [ebp-10]
00582EDF    DD45 F0         fld     qword ptr [ebp-10]
00582EE2    DC0D 62634000   fmul    qword ptr [406362]               ; 机器码*5
00582EE8    DD5D E8         fstp    qword ptr [ebp-18]
00582EEB    68 00000000     push    0
00582EF0    BB C4060000     mov     ebx, 6C4
00582EF5    E8 2B8B0100     call    0059BA25
00582EFA    83C4 04         add     esp, 4
00582EFD    68 01030080     push    80000301
00582F02    6A 00           push    0
00582F04    50              push    eax
00582F05    68 01000000     push    1
00582F0A    BB 68010000     mov     ebx, 168
00582F0F    E8 118B0100     call    0059BA25                         ; 机器码字符串
00582F14    83C4 10         add     esp, 10
00582F17    8945 E0         mov     dword ptr [ebp-20], eax
00582F1A    68 04000080     push    80000004
00582F1F    6A 00           push    0
00582F21    8B45 E0         mov     eax, dword ptr [ebp-20]
00582F24    85C0            test    eax, eax
00582F26    75 05           jnz     short 00582F2D
00582F28    B8 E4614000     mov     eax, 004061E4
00582F2D    50              push    eax
00582F2E    68 01000000     push    1
00582F33    BB 30010000     mov     ebx, 130
00582F38    E8 E88A0100     call    0059BA25                         ; 计算为数
00582F3D    83C4 10         add     esp, 10
00582F40    8945 DC         mov     dword ptr [ebp-24], eax
00582F43    8B5D E0         mov     ebx, dword ptr [ebp-20]
00582F46    85DB            test    ebx, ebx
00582F48    74 09           je      short 00582F53
00582F4A    53              push    ebx
00582F4B    E8 C98A0100     call    0059BA19
00582F50    83C4 04         add     esp, 4
00582F53    DD45 E8         fld     qword ptr [ebp-18]               ; 刚才*5后的结果
00582F56    DB45 DC         fild    dword ptr [ebp-24]
00582F59    DD5D D4         fstp    qword ptr [ebp-2C]
00582F5C    DC45 D4         fadd    qword ptr [ebp-2C]               ; +上机器码的位数
00582F5F    DD5D CC         fstp    qword ptr [ebp-34]
00582F62    68 01060080     push    80000601
00582F67    FF75 D0         push    dword ptr [ebp-30]
00582F6A    FF75 CC         push    dword ptr [ebp-34]
00582F6D    68 01000000     push    1
00582F72    BB 68010000     mov     ebx, 168
00582F77    E8 A98A0100     call    0059BA25
00582F7C    83C4 10         add     esp, 10
00582F7F    8945 C8         mov     dword ptr [ebp-38], eax          ; 这里就是最后结果了
00582F82    68 6A634000     push    0040636A                         ; lwt
00582F87    FF75 C8         push    dword ptr [ebp-38]
00582F8A    B9 02000000     mov     ecx, 2
00582F8F    E8 1FE3FFFF     call    005812B3
00582F94    83C4 08         add     esp, 8
00582F97    8945 C4         mov     dword ptr [ebp-3C], eax          ; 连接字符串得到"6738706325lwt"
00582F9A    8B5D C8         mov     ebx, dword ptr [ebp-38]          ; 这个字符串就是真码了。简单吧
00582F9D    85DB            test    ebx, ebx
00582F9F    74 09           je      short 00582FAA
00582FA1    53              push    ebx
00582FA2    E8 728A0100     call    0059BA19
00582FA7    83C4 04         add     esp, 4
00582FAA    68 04000080     push    80000004
00582FAF    6A 00           push    0


既然是用易语言写的,那就:


.版本 2

.程序集 窗口程序集1

.子程序 _按钮1_被单击
.局部变量 jiqima, 文本型
.局部变量 len, 整数型
.局部变量 code, 长整数型

jiqima = 编辑框1.内容
len = 取文本长度 (jiqima)
code = 到数值 (jiqima) × 5
code = code + len
编辑框2.内容 = 到文本 (code) + “lwt”




这个软件学到的是隐藏计算注册码的算法。