机械设计系统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
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课