• 标 题:机械设计系统1.0破解实录------------算法简单,破解过程一
  • 作 者:marswu
  • 时 间:2005-01-08,19:40
  • 链 接:http://bbs.pediy.com

机械设计系统1.0破解实录------------算法简单,破解过程一波三折,保护方式比较有意思!!


[软件介绍]

 本软件主要面向机械工程设计者使用,主要功能有如下几个方面:
1、公差类:孔、轴、形位公差查询;尺寸中等级与粗糙度的合理选配;未注尺寸自由偏差及平板的平面度与平行度公差。
2、材料类:材料密度查询;有17类型材的规格及相应密度、重量计算;材料大类所属各牌号的特性;各种材料配合时的摩擦系数及运动机构的传动效率等。
3、标件类:各种联接件(螺栓、螺母、螺钉、垫圈、挡圈、销、螺柱、铆钉、键、密封圈等)按名称或按型号方便查询及其各种规格下的各种尺寸以图示的方式一目了然,再辅助以相应的帮助文档;普通螺纹、梯形螺纹、非螺纹密封的管螺纹、螺纹密封的管螺纹、英制螺纹的规格尺寸。
3、传动类:齿轮设计计算;蜗轮蜗杆设计计算;链轮设计计算;传动轴强度计算;弹簧设计计算;滑动螺旋设计计算,并含有相应的校核。只输入现有的一些已知数据就能自动计算得出准确结果,可大大减轻人的脑力劳动,省得去翻阅设计手册,节省大量时间,加快设计速度,提高产品设计开发的成功率。
4、轴承类:各种规格轴承的查询、受力下校核及润滑。
5、联接件、销、键在不同方式下的安全校核。
6、工程计算器(全权共享):可在不进入主界面情形下选用工程计算器进行各种材料、各种形状下计算体积重量,方便快捷。
7、辅助类:生产、供应、销售、人事下相应事务的管理及查询。
8、人性化的界面可自行设置,更改。


[使用限制]  试用20次。

[保护方式]  采用硬件序列号,一机注册码
[下载]http://www1.skycn.com/soft/21365.html

[破解工具]   olldbg1.10 、Peid0.92、c32asm1.0002

破解过程:

1.该软件用VC编写,无壳。

2.用C32ASM载入后可得到如下字符串参考信息

注册成功
  ::00458354->PUSH 50D790
注册成功第一步
  ::00458249->PUSH 50D7C0
注册码:
  ::00444E55->PUSH 50A564
注册失败
  ::00458266->PUSH 50D7B4
注册用户
  ::00444E74->PUSH 50A550


用olldbg载入后,按 ctrl+G  00458354 来到:

00458354   . 68 90D75000    PUSH 机械设计.0050D790
00458359   . E8 0237FBFF    CALL 机械设计.0040BA60
0045835E   . 51             PUSH ECX
0045835F   . 8BCC           MOV ECX,ESP
00458361   . 896424 18      MOV DWORD PTR SS:[ESP+18],ESP
00458365   . 68 6C255000    PUSH 机械设计.0050256C
0045836A   . C64424 38 05   MOV BYTE PTR SS:[ESP+38],5
0045836F   . E8 EC36FBFF    CALL 机械设计.0040BA60
00458374   . 8BCE           MOV ECX,ESI
00458376   . C64424 34 04   MOV BYTE PTR SS:[ESP+34],4
0045837B   . E8 90FBFFFF    CALL 机械设计.00457F10
00458380   . 833D 30B95400 >CMP DWORD PTR DS:[54B930],13
00458387   . 7E 4C          JLE SHORT 机械设计.004583D5

再向上看,来到这里:


0045822E   . E8 44790700    CALL 机械设计.004CFB77
00458233   . 8B4E 70        MOV ECX,DWORD PTR DS:[ESI+70]  ;机器码(十六进制)送ECX
00458236   . 8B46 74        MOV EAX,DWORD PTR DS:[ESI+74]  ;我们输入注册码(十六进制)送EAX
00458239   . 35 B7D64C1A    XOR EAX,1A4CD6B7            ;EAX 与 1A4CD6B7异或。
0045823E   . 51             PUSH ECX
0045823F   . 3BC1           CMP EAX,ECX           ;比较注册码
00458241   . 8BCC           MOV ECX,ESP
00458243   . 75 1D          JNZ SHORT 机械设计.00458262



所以   注册码=机器码 XOR 1A4CD6B7    ( A4CD6B7= 441243319)

我的机器码为 :2867163251  ,注册码就是:2867163251 xor 441243319=2963908292


2.填入正确注册码后,程序依然没有现示已注册。
再进行跟踪发现在004582B6处call中用 CreateFileA ,试图对自身进行写访问。
如果访问成功,在0045833F处call程序会把输入注册码写到程序尾部十个字节处,
 然而正常情况下这是不可能的。
看来这就是没有现示已注册原因。
 
3.用把注册码:2963908292写到"机械设计系统1.0.exe"尾部,再运行程序
  提示注册的对话框没有了,出现了登陆对话框。新的问题有出现了,
  用户权限有"管理员级 ,一般用户,高级用户"三种,无论选那一级用户都登不进取,
  看来还要拿到数据库中用户密码才行。

4. 用ACCESS2003打开软件目录PYF下的SF.mdb,发现加了密.
 我用破解ACCESS密码软件:CHKenTools.exe 得到其密码为:622127FEI
下面再用ACCESS2003打开SF.mdb 找到"登录用户"表得到如下信息: 
-------------------------------------------------------------------------------
Alias          Password          Authority              UserName
Administer  EPAPFDGGDBFVBKFMGW  管理员级              潘应锋
PanYF          BWALIWJLDKJMFFAKDVGK  一般用户              潘
你我她          CPHYINJLFVDGIZ          高级用户              飞客
FEI          7                   /                       /
--------------------------------------------------------------------------------

我大喜,可我用里面Password依然登录不进取,看来程序把密码加密再保存到数据库中.
革命尚未成功啊!郁闷............。

5.在用C32ASM中查看字符串,可看到大量SQL语句: 

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\PYF\SF.mdb;Jet OLEDB:DataBase Password=622127FEI
  ::004519C1->PUSH 50C350
                      (数据库密码在这里也可看到!!,我以后看密码先搜索这条语句) 


select * from 登录用户 where Alias='Administer' and Password='
  ::00443911->PUSH 50A278
select * from 登录用户 where Alias='
  ::00443DDF->PUSH 50A33C
  ::0044415D->PUSH 50A33C
  ::00445763->PUSH 50A33C
  ::00445E57->PUSH 50A33C
  ::004461CB->PUSH 50A33C
  ::00446569->PUSH 50A33C
  ::0044705D->PUSH 50A33C
  ::00447DD7->PUSH 50A33C
select * from 登录用户 where Authority='
  ::00445F36->PUSH 50A728

    'AND Password=' 应该与密码有关,但太多处调用,一一设断跟踪太繁。

  下面对GetWindowTextA函数设断来跟,

用OLLYDBG加载程序后, ALT+E选择到USER32.dll模块,按右键,
选择“Search for ->Name (label)” 出现调用函数的窗口,
向下拉动找到GetWindowTextA并选择它,按下F2。
按F9执行,回到主程序,添入注册名和注册码注册,被OllyDbg拦截住,
按CTRL+F9,再按F8返回程序领空后来到如下位置:
  
004DAE30  |> 50             PUSH EAX                                 ; |Buffer
004DAE31  |. FF75 08        PUSH DWORD PTR SS:[EBP+8]                ; |hWnd
004DAE34  |. FF15 44155000  CALL DWORD PTR DS:[<&USER32.GetWindowTex>; \GetWindowTextA
004DAE3A  |. 8B4D 10        MOV ECX,DWORD PTR SS:[EBP+10]
004DAE3D  |. 6A FF          PUSH -1

跳出上面那段代码后来到:

00443590   . 53             PUSH EBX
00443591   . 56             PUSH ESI
00443592   . 57             PUSH EDI
00443593   . 8B7C24 10      MOV EDI,DWORD PTR SS:[ESP+10]
00443597   . 8BF1           MOV ESI,ECX
00443599   . 8D46 74        LEA EAX,DWORD PTR DS:[ESI+74]
0044359C   . 50             PUSH EAX                  ; /Arg3
0044359D   . 68 ED030000    PUSH 3ED                  ; |Arg2 = 000003ED
004435A2   . 57             PUSH EDI                   ; |Arg1
004435A3   . E8 35780900    CALL 机械设计.004DADDD      ; \机械设计.004DADDD
                                           ;获取用户名的CALL
004435A8   . 8D5E 78        LEA EBX,DWORD PTR DS:[ESI+78]
004435AB   . 53             PUSH EBX                 ; /Arg3
004435AC   . 68 13040000    PUSH 413                  ; |Arg2 = 00000413
004435B1   . 57             PUSH EDI                  ; |Arg1
004435B2   . E8 D4770900    CALL 机械设计.004DAD8B    ; \机械设计.004DAD8B
                                           ;获取用户密码的CALL 
004435B7   . 6A 0A          PUSH 0A
004435B9   . 53             PUSH EBX
004435BA   . 57             PUSH EDI
004435BB   . E8 F1760900    CALL 机械设计.004DACB1
004435C0   . 8D8E 80000000  LEA ECX,DWORD PTR DS:[ESI+80]
004435C6   . 51             PUSH ECX                                 ; /Arg3
004435C7   . 68 ED030000    PUSH 3ED                                 ; |Arg2 = 000003ED
004435CC   . 57             PUSH EDI                                 ; |Arg1
004435CD   . E8 21750900    CALL 机械设计.004DAAF3                       ; \机械设计.004DAAF3
004435D2   . 8D96 D0000000  LEA EDX,DWORD PTR DS:[ESI+D0]
004435D8   . 52             PUSH EDX                                 ; /Arg3
004435D9   . 68 12040000    PUSH 412                                 ; |Arg2 = 00000412
004435DE   . 57             PUSH EDI                                 ; |Arg1
004435DF   . E8 0F750900    CALL 机械设计.004DAAF3                       ; \机械设计.004DAAF3
004435E4   . 81C6 28010000  ADD ESI,128
004435EA   . 56             PUSH ESI                                 ; /Arg3
004435EB   . 68 FA030000    PUSH 3FA                                 ; |Arg2 = 000003FA
004435F0   . 57             PUSH EDI                                 ; |Arg1
004435F1   . E8 FD740900    CALL 机械设计.004DAAF3                       ; \机械设计.004DAAF3
004435F6   . 5F             POP EDI
004435F7   . 5E             POP ESI
004435F8   . 5B             POP EBX



继续更来到如下位置可见到生成查询数据库的SQL语句:

0044415D   . 68 3CA35000    PUSH 机械设计.0050A33C
00444162   . 50             PUSH EAX
00444163   . E8 9862FCFF    CALL 机械设计.0040A400
00444168   . 68 2CA35000    PUSH 机械设计.0050A32C                       ;  ASCII "'AND Password='"
0044416D   . 50             PUSH EAX
0044416E   . 8D4C24 2C      LEA ECX,DWORD PTR SS:[ESP+2C]
00444172   . 51             PUSH ECX
00444173   . C74424 44 0100>MOV DWORD PTR SS:[ESP+44],1
0044417B   . E8 1000FCFF    CALL 机械设计.00404190      ; 连接字符串(AND Password=)生成SQL查询语句
00444180   . 57             PUSH EDI
00444181   . 50             PUSH EAX
00444182   . 8D5424 34      LEA EDX,DWORD PTR SS:[ESP+34]
00444186   . 52             PUSH EDX
00444187   . C64424 50 02   MOV BYTE PTR SS:[ESP+50],2
0044418C   . E8 4FFFFBFF    CALL 机械设计.004040E0         ;  连接生成SQL查询语句
00444191   . 68 B02C5000    PUSH 机械设计.00502CB0
00444196   . 50             PUSH EAX
00444197   . 8D4424 3C      LEA EAX,DWORD PTR SS:[ESP+3C]
0044419B   . 50             PUSH EAX
0044419C   . C64424 5C 03   MOV BYTE PTR SS:[ESP+5C],3
004441A1   . E8 EAFFFBFF    CALL 机械设计.00404190         ; 连接生成SQL查询语句 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
(跟进0040190)
004041F9   . 8D4424 30      LEA EAX,DWORD PTR SS:[ESP+30]
004041FD   . 50             PUSH EAX
004041FE   . E8 FDFBFFFF    CALL 机械设计.00403E00        ;  连接生成SQL语句的call
00404203   . 8B7424 34      MOV ESI,DWORD PTR SS:[ESP+34] ;[ESP+34]为生成的sql语句地址
           

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
0044425B   . 8907           MOV DWORD PTR DS:[EDI],EAX       ;  EAX中为查询密码sql语句地址
0044425D   . E8 FED10000    CALL 机械设计.00451460
00444262   . A1 ECB75400    MOV EAX,DWORD PTR DS:[54B7EC]
00444267   . 83C4 04        ADD ESP,4
0044426A   . 85C0           TEST EAX,EAX
0044426C   . 75 0F          JNZ SHORT 机械设计.0044427D
0044426E   . 68 03400080    PUSH 80004003
00444273   . E8 68740800    CALL 机械设计.004CB6E0
00444278   . A1 ECB75400    MOV EAX,DWORD PTR DS:[54B7EC]
0044427D   > 8B08           MOV ECX,DWORD PTR DS:[EAX]
0044427F   . 8D5424 10      LEA EDX,DWORD PTR SS:[ESP+10]
00444283   . 52             PUSH EDX
00444284   . 50             PUSH EAX
00444285   . 8BF8           MOV EDI,EAX
00444287   . C74424 18 0000>MOV DWORD PTR SS:[ESP+18],0
0044428F   . FF51 50        CALL DWORD PTR DS:[ECX+50]       ;  调用msADO15.dll
00444292   . 85C0           TEST EAX,EAX
00444294   . 7D 0C          JGE SHORT 机械设计.004442A2
00444296   . 68 B01C5000    PUSH 机械设计.00501CB0
0044429B   . 57             PUSH EDI
0044429C   . 50             PUSH EAX
0044429D   . E8 4E740800    CALL 机械设计.004CB6F0
004442A2   > 66:837C24 10 0>CMP WORD PTR SS:[ESP+10],0       ;  判断是否登录成功
004442A8   . 0F84 36010000  JE 机械设计.004443E4
004442AE   . 8B8E 7C010000  MOV ECX,DWORD PTR DS:[ESI+17C]
004442B4   . 83F9 02        CMP ECX,2                       ;  比较登录次数
004442B7   . 0F8D 9B000000  JGE 机械设计.00444358

下面为我输入 1 后在OD中看到的:

01FBA290  73 65 6C 65 63 74 20 2A 20 66 72 6F 6D 20 B5 C7  select * from 登
01FBA2A0  C2 BC D3 C3 BB A7 20 77 68 65 72 65 20 41 6C 69  录用户 where Ali
01FBA2B0  61 73 3D 27 41 64 6D 69 6E 69 73 74 65 72 27 41  as='Administer'A
01FBA2C0  4E 44 20 50 61 73 73 77 6F 72 64 3D 27 42 58 27  ND Password='BX'

很明显:    1   对应密码为  BX .

我们只需把数据库中的用户密码改为BX,输入密码1就可成功登陆.


6.
   下面再回过头来看看其是如何加密用户密码的: 

0044E660   $ 6A FF          PUSH -1
0044E662   . 68 C8754F00    PUSH 机械设计.004F75C8               ;  SE handler installation
0044E667   . 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
0044E66D   . 50             PUSH EAX
0044E66E   . 64:8925 000000>MOV DWORD PTR FS:[0],ESP
0044E675   . 83EC 1C        SUB ESP,1C
0044E678   . 53             PUSH EBX
0044E679   . 55             PUSH EBP
0044E67A   . 56             PUSH ESI
0044E67B   . 33F6           XOR ESI,ESI
0044E67D   . 57             PUSH EDI
0044E67E   . 897424 28      MOV DWORD PTR SS:[ESP+28],ESI
0044E682   . 897424 34      MOV DWORD PTR SS:[ESP+34],ESI
0044E686   . E8 884D0800    CALL 机械设计.004D3413
0044E68B   . 8B10           MOV EDX,DWORD PTR DS:[EAX]
0044E68D   . 8BC8           MOV ECX,EAX
0044E68F   . FF52 0C        CALL DWORD PTR DS:[EDX+C]
0044E692   . 83C0 10        ADD EAX,10
0044E695   . 894424 14      MOV DWORD PTR SS:[ESP+14],EAX
0044E699   . C64424 34 01   MOV BYTE PTR SS:[ESP+34],1
0044E69E   . E8 704D0800    CALL 机械设计.004D3413
0044E6A3   . 8B10           MOV EDX,DWORD PTR DS:[EAX]
0044E6A5   . 8BC8           MOV ECX,EAX
0044E6A7   . FF52 0C        CALL DWORD PTR DS:[EDX+C]
0044E6AA   . 8D58 10        LEA EBX,DWORD PTR DS:[EAX+10]
0044E6AD   . 895C24 18      MOV DWORD PTR SS:[ESP+18],EBX
0044E6B1   . 8D4424 40      LEA EAX,DWORD PTR SS:[ESP+40]
0044E6B5   . 50             PUSH EAX
0044E6B6   . 8D4C24 18      LEA ECX,DWORD PTR SS:[ESP+18]
0044E6BA   . C64424 38 02   MOV BYTE PTR SS:[ESP+38],2
0044E6BF   . E8 4C59FBFF    CALL 机械设计.00404010
0044E6C4   . 8B4424 40      MOV EAX,DWORD PTR SS:[ESP+40]        ;  [ESP+40]]为输入密码地址
0044E6C8   . 3970 F4        CMP DWORD PTR DS:[EAX-C],ESI
0044E6CB   . 8B6C24 14      MOV EBP,DWORD PTR SS:[ESP+14]        ;  [ESP+14]为输入密码地址
0044E6CF   . 7E 5A          JLE SHORT 机械设计.0044E72B
                                                                  ;  循环开始
0044E6D1   > 8A0C06         MOV CL,BYTE PTR DS:[ESI+EAX]         ;  依次取输入密码每一位ASCII码送CL
0044E6D4   . 8B7D F4        MOV EDI,DWORD PTR SS:[EBP-C]         ;  [EBP-C]中为输入密码长度
0044E6D7   . 884C24 13      MOV BYTE PTR SS:[ESP+13],CL          ;  密码ASCII码送[ESP+13]
0044E6DB   . 837D FC 01     CMP DWORD PTR SS:[EBP-4],1
0044E6DF   . 7E 14          JLE SHORT 机械设计.0044E6F5
0044E6E1   . 8BD7           MOV EDX,EDI
0044E6E3   . 52             PUSH EDX
0044E6E4   . 8D4C24 18      LEA ECX,DWORD PTR SS:[ESP+18]
0044E6E8   . E8 A330FBFF    CALL 机械设计.00401790
0044E6ED   . 8B6C24 14      MOV EBP,DWORD PTR SS:[ESP+14]        ;  输入密码地址送EBP
0044E6F1   . 8B4424 40      MOV EAX,DWORD PTR SS:[ESP+40]        ;  输入密码地址送EAX
0044E6F5   > 8A4C24 45      MOV CL,BYTE PTR SS:[ESP+45]          ;  取变量[ESP+44]内存中第二字节(即十六进制值高8位)
0044E6F9   . 324C24 13      XOR CL,BYTE PTR SS:[ESP+13]          ;  CL 异或  每位密码ASCII码
0044E6FD   . 880C2E         MOV BYTE PTR DS:[ESI+EBP],CL         ;  用异或值代替原密码
0044E700   . 8B4C24 44      MOV ECX,DWORD PTR SS:[ESP+44]
0044E704   . 897D F4        MOV DWORD PTR SS:[EBP-C],EDI         ;  密码长度送[EBP-C]
0044E707   . C6042F 00      MOV BYTE PTR DS:[EDI+EBP],0
0044E70B   . 66:0FB6142E    MOVZX DX,BYTE PTR DS:[ESI+EBP]       ;  依次取输入密码每一位ASCII码送DX
0044E710   . 03D1           ADD EDX,ECX
0044E712   . 69D2 93310000  IMUL EDX,EDX,3193                    ;   EDX=EDX*3193
0044E718   . B9 BF580000    MOV ECX,58BF                         ;  ECX=58BF
0044E71D   . 2BCA           SUB ECX,EDX                          ;  ECX=ECX-EDX
0044E71F   . 894C24 44      MOV DWORD PTR SS:[ESP+44],ECX        ;  ECX送变量[ESP+44]
0044E723   . 8B48 F4        MOV ECX,DWORD PTR DS:[EAX-C]         ;  输入密码长度送ECX
0044E726   . 46             INC ESI                              ;  计数器加1
0044E727   . 3BF1           CMP ESI,ECX                          ;  比较循环次数
0044E729   .^7C A6          JL SHORT 机械设计.0044E6D1
 
..........................................

........................................(略)
.........................................

下面程序把密码位一个字符转换为两个字符.
0044E7C8   . 85C9           TEST ECX,ECX
0044E7CA   . C74424 20 0000>MOV DWORD PTR SS:[ESP+20],0
0044E7D2   . 0F8E 15010000  JLE 机械设计.0044E8ED
0044E7D8   . EB 06          JMP SHORT 机械设计.0044E7E0
0044E7DA   > 8B4424 40      MOV EAX,DWORD PTR SS:[ESP+40]        ;  循环开始
0044E7DE   . 8BFF           MOV EDI,EDI
0044E7E0   > 8B4C24 20      MOV ECX,DWORD PTR SS:[ESP+20]
0044E7E4   . 0FB63C01       MOVZX EDI,BYTE PTR DS:[ECX+EAX]      ;  依次前面经过转换后密码每一位ASCII码送CL
0044E7E8   . B8 B8BA5000    MOV EAX,机械设计.0050BAB8            ;  ASCII "12"
0044E7ED   . 8D50 01        LEA EDX,DWORD PTR DS:[EAX+1]
0044E7F0   > 8A08           MOV CL,BYTE PTR DS:[EAX]
0044E7F2   . 40             INC EAX
0044E7F3   . 84C9           TEST CL,CL
0044E7F5   .^75 F9          JNZ SHORT 机械设计.0044E7F0
0044E7F7   . 2BC2           SUB EAX,EDX
0044E7F9   . 50             PUSH EAX
0044E7FA   . 68 B8BA5000    PUSH 机械设计.0050BAB8               ;  ASCII "12"
0044E7FF   . 8D4C24 20      LEA ECX,DWORD PTR SS:[ESP+20]
0044E803   . E8 7854FBFF    CALL 机械设计.00403C80
0044E808   . 8B5C24 18      MOV EBX,DWORD PTR SS:[ESP+18]
0044E80C   . 837B FC 01     CMP DWORD PTR DS:[EBX-4],1
0044E810   . 8B73 F4        MOV ESI,DWORD PTR DS:[EBX-C]
0044E813   . 7E 10          JLE SHORT 机械设计.0044E825
0044E815   . 8BD6           MOV EDX,ESI
0044E817   . 52             PUSH EDX
0044E818   . 8D4C24 1C      LEA ECX,DWORD PTR SS:[ESP+1C]
0044E81C   . E8 6F2FFBFF    CALL 机械设计.00401790
0044E821   . 8B5C24 18      MOV EBX,DWORD PTR SS:[ESP+18]
0044E825   > 8BC7           MOV EAX,EDI                          ;  密码位ASCII码送EAX
0044E827   . 99             CDQ
0044E828   . B9 1A000000    MOV ECX,1A
0044E82D   . F7F9           IDIV ECX                             ;  与1A相除
0044E82F   . 04 41          ADD AL,41                            ;  加41
0044E831   . 8803           MOV BYTE PTR DS:[EBX],AL             ;  保存结果字符1
0044E833   . 8973 F4        MOV DWORD PTR DS:[EBX-C],ESI
0044E836   . C6041E 00      MOV BYTE PTR DS:[ESI+EBX],0
0044E83A   . 837B FC 01     CMP DWORD PTR DS:[EBX-4],1
0044E83E   . 8B73 F4        MOV ESI,DWORD PTR DS:[EBX-C]
0044E841   . 895424 24      MOV DWORD PTR SS:[ESP+24],EDX
0044E845   . 7E 14          JLE SHORT 机械设计.0044E85B
0044E847   . 8BD6           MOV EDX,ESI
0044E849   . 52             PUSH EDX
0044E84A   . 8D4C24 1C      LEA ECX,DWORD PTR SS:[ESP+1C]
0044E84E   . E8 3D2FFBFF    CALL 机械设计.00401790
0044E853   . 8B5C24 18      MOV EBX,DWORD PTR SS:[ESP+18]
0044E857   . 8B5424 24      MOV EDX,DWORD PTR SS:[ESP+24]
0044E85B   > 80C2 41        ADD DL,41                            ;  上面相除余数加41
0044E85E   . 8853 01        MOV BYTE PTR DS:[EBX+1],DL           ;  保存结果到字符2
0044E861   . 8973 F4        MOV DWORD PTR DS:[EBX-C],ESI
0044E864   . C6041E 00      MOV BYTE PTR DS:[ESI+EBX],0
0044E868   . 8B53 F4        MOV EDX,DWORD PTR DS:[EBX-C]
0044E86B   . 8B7D F4        MOV EDI,DWORD PTR SS:[EBP-C]
0044E86E   . 8D0417         LEA EAX,DWORD PTR DS:[EDI+EDX]
0044E871   . 894424 1C      MOV DWORD PTR SS:[ESP+1C],EAX
0044E875   . 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4]
0044E878   . B9 01000000    MOV ECX,1
0044E87D   . 2BC8           SUB ECX,EAX
0044E87F   . 8B45 F8        MOV EAX,DWORD PTR SS:[EBP-8]
0044E882   . 2B4424 1C      SUB EAX,DWORD PTR SS:[ESP+1C]
0044E886   . 8BF3           MOV ESI,EBX
0044E888   . 2BF5           SUB ESI,EBP
0044E88A   . 0BC1           OR EAX,ECX
0044E88C   . 895424 28      MOV DWORD PTR SS:[ESP+28],EDX
0044E890   . 895C24 24      MOV DWORD PTR SS:[ESP+24],EBX
0044E894   . 7D 16          JGE SHORT 机械设计.0044E8AC
0044E896   . 8B4C24 1C      MOV ECX,DWORD PTR SS:[ESP+1C]
0044E89A   . 51             PUSH ECX
0044E89B   . 8D4C24 18      LEA ECX,DWORD PTR SS:[ESP+18]
0044E89F   . E8 CC38FBFF    CALL 机械设计.00402170
0044E8A4   . 8B6C24 14      MOV EBP,DWORD PTR SS:[ESP+14]
0044E8A8   . 8B5424 28      MOV EDX,DWORD PTR SS:[ESP+28]
0044E8AC   > 3BF7           CMP ESI,EDI
0044E8AE   . 77 06          JA SHORT 机械设计.0044E8B6
0044E8B0   . 03F5           ADD ESI,EBP
0044E8B2   . 897424 24      MOV DWORD PTR SS:[ESP+24],ESI
0044E8B6   > 8B7424 24      MOV ESI,DWORD PTR SS:[ESP+24]
0044E8BA   . 8B4424 1C      MOV EAX,DWORD PTR SS:[ESP+1C]
0044E8BE   . 8BCA           MOV ECX,EDX
0044E8C0   . C1E9 02        SHR ECX,2
0044E8C3   . 03FD           ADD EDI,EBP
0044E8C5   . F3:A5          REP MOVS DWORD PTR ES:[EDI],DWORD PT>
0044E8C7   . 8BCA           MOV ECX,EDX
0044E8C9   . 83E1 03        AND ECX,3
0044E8CC   . F3:A4          REP MOVS BYTE PTR ES:[EDI],BYTE PTR >
0044E8CE   . 8B4C24 40      MOV ECX,DWORD PTR SS:[ESP+40]
0044E8D2   . 8945 F4        MOV DWORD PTR SS:[EBP-C],EAX
0044E8D5   . C60428 00      MOV BYTE PTR DS:[EAX+EBP],0
0044E8D9   . 8B4424 20      MOV EAX,DWORD PTR SS:[ESP+20]
0044E8DD   . 8B51 F4        MOV EDX,DWORD PTR DS:[ECX-C]
0044E8E0   . 40             INC EAX
0044E8E1   . 3BC2           CMP EAX,EDX                          ;  比较循环次数
0044E8E3   . 894424 20      MOV DWORD PTR SS:[ESP+20],EAX
0044E8E7   .^0F8C EDFEFFFF  JL 机械设计.0044E7DA


7.登录时发现输入正确管理员密码后,登录界面“管理员”灰色按被激活,
  点击后弹出一个界面可以完成如下功能:
   
   添加用户 。。。。。。。。。。。
   删除用户
   解密用户 ......................(可以得到其它用户密码)
   解密钥   ......................(机器码)
   解密机用户码......................(可以生成注册码,注册机都不用写啦!!!!)


我用解密用户得到:
                Administer  密码 EPAPFDGGDBFVBKFMGW 对应明文密码  wtflfoFEI

 用上面软件提供注册供能还是不能注册(软件有bug).
                              
8.
  对 READFILE 函数设断可看到程序启动时时如何判断是否注册的: 



00451CD0   . 6A 0A          PUSH 0A                                  ; /Arg2 = 0000000A
00451CD2   . 8D4D 80        LEA ECX,DWORD PTR SS:[EBP-80]            ; |
00451CD5   . 51             PUSH ECX                                 ; |Arg1
00451CD6   . 8D4D D0        LEA ECX,DWORD PTR SS:[EBP-30]            ; |
00451CD9   . E8 811C0800    CALL 机械设计.004D395FSS:[         ; \机械设计.004D395F395F

                                                          ;该CALL读取文件尾部保存注册码
00451CDE   . 8D4D D0        LEA ECX,DWORD PTR SS:[EBP-30]
00451CE1   . E8 0A1F0800    CALL 机械设计.004D3BF0SS:[
00451CE6   . 8D55 80        LEA EDX,DWORD PTR SS:[EBP-80]
00451CE9   . 52             PUSH EDX
00451CEA   . E8 5E9D0600    CALL 机械设计.004BBA4D
00451CEF   . 83C4 04        ADD ESP,4
00451CF2   . 6A 0A          PUSH 0A                                  ; /pFileSystemNameSize = 0000000A
00451CF4   . 6A 00          PUSH 0                                   ; |pFileSystemNameBuffer = NULL
00451CF6   . 6A 00          PUSH 0                                   ; |pFileSystemFlags = NULL
00451CF8   . 6A 00          PUSH 0                                   ; |pMaxFilenameLength = NULL
00451CFA   . 8BF8           MOV EDI,EAX                              ; |
00451CFC   . 8D45 E0        LEA EAX,DWORD PTR SS:[EBP-20]            ; |
00451CFF   . 50             PUSH EAX                                 ; |pVolumeSerialNumber
00451D00   . 6A 0C          PUSH 0C                                  ; |MaxVolumeNameSize = C (12.)
00451D02   . 6A 00          PUSH 0                                   ; |VolumeNameBuffer = NULL
00451D04   . 68 4CA55000    PUSH 机械设计.0050A54C= NU                   ; |RootPathName = "c:\"
00451D09   . 81F7 E3E5688F  XOR EDI,8F68E5E3        ;注册码与8F68E5E3异或
00451D0F   . FF15 54135000  CALL DWORD PTR DS:[<&KERNEL32.GetVolumeI>; \GetVolumeInformationA
                                                           ;得到C盘序列号
00451D15   . 3B7D E0        CMP EDI,DWORD PTR SS:[EBP-20]  ;比较C盘序列号与上面异或值是否相等
                                                            ;相等就是已注册
00451D18   . 74 34          JE SHORT 机械设计.00451D4E    ;爆破改这里
00451D1A   . 6A 00          PUSH 0
00451D1C   . 8D8D 24FDFFFF  LEA ECX,DWORD PTR SS:[EBP-2DC]
00451D22   . C605 A5B55400 >MOV BYTE PTR DS:[54B5A5],0  ;注册标志变量[54B5A5]赋0
00451D29   . E8 62630000    CALL 机械设计.004580904B5A
00451D2E   . 8D8D 24FDFFFF  LEA ECX,DWORD PTR SS:[EBP-2DC]
00451D34   . C645 FC 08     MOV BYTE PTR SS:[EBP-4],8
00451D38   . E8 DCCB0700    CALL 机械设计.004CE919BP-4
00451D3D   . 8D8D 24FDFFFF  LEA ECX,DWORD PTR SS:[EBP-2DC]
00451D43   . C645 FC 07     MOV BYTE PTR SS:[EBP-4],7
00451D47   . E8 04610000    CALL 机械设计.00457E50BP-4
00451D4C   . EB 07          JMP SHORT 机械设计.00451D55
00451D4E   > C605 A5B55400 >MOV BYTE PTR DS:[54B5A5],1     ;注册标志变量[54B5A5]赋1
00451D55   > 8B4E 1C        MOV ECX,DWORD PTR DS:[ESI+1C]
00451D58   . 6A 03          PUSH 3
00451D5A   . E8 2C0B0800    CALL 机械设计.004D288B
00451D5F   . A0 A5B55400    MOV AL,BYTE PTR DS:[54B5A5]
00451D64   . 84C0           TEST AL,AL
00451D66   . 74 66          JE SHORT 机械设计.00451DCE



总结: 软件注册码就是C盘序列号与8F68E5E3异或值的十进制数,保存在文件最后10个字节就可成功注册.
        Administer 密码  wtflfoFEI