标题:E族百变桌面7.2注册流程分析
作者:jney2
时间:2005.1.21
目的:个人学习,交流经验,找出软件的软肋,希望作者在下一版本中有所改进!
观念:喜欢分析注册流程,极少算法分析。
工具:DeDE3.5、Ollydbg1.1
E族百变桌面7.2算法可参考yzez[DFCG]的《E族百变桌面6.0注册算法分析》。
在菜单中选“升级到正式版”就执行到如下代码:
005074A0 . 53 PUSH EBX
005074A1 . 8BD8 MOV EBX,EAX
005074A3 . E8 DC6DFCFF CALL ePaper.004CE284
005074A8 . 8983 C0030000 MOV DWORD PTR DS:[EBX+3C0],EAX
005074AE . 8993 C4030000 MOV DWORD PTR DS:[EBX+3C4],EDX
005074B4 . A1 3C845300 MOV EAX,DWORD PTR DS:[53843C]
005074B9 . 8038 00 CMP BYTE PTR DS:[EAX],0 //注册标志
005074BC . 74 09 JE SHORT ePaper.005074C7 //为0即未注册,执行未注册窗口;为1即已注册,执行升级成功窗口,并将正确的注册码写入注册表。在此做个内存补丁即可完成软件的自动注册。
005074BE . 8BC3 MOV EAX,EBX
005074C0 . E8 DF070000 CALL ePaper.00507CA4
005074C5 . 5B POP EBX
005074C6 . C3 RETN
005074C7 > C783 CC030000 >MOV DWORD PTR DS:[EBX+3CC],1
005074D1 . 33D2 XOR EDX,EDX
005074D3 . 8B83 04030000 MOV EAX,DWORD PTR DS:[EBX+304]
005074D9 . 8B08 MOV ECX,DWORD PTR DS:[EAX]
005074DB . FF51 64 CALL DWORD PTR DS:[ECX+64]
005074DE . 8BC3 MOV EAX,EBX
005074E0 . E8 6BFFFFFF CALL ePaper.00507450
005074E5 . 5B POP EBX
005074E6 . C3 RETN
00507CA4 /$ 55 PUSH EBP
00507CA5 |. 8BEC MOV EBP,ESP
00507CA7 |. 83C4 F0 ADD ESP,-10
00507CAA |. 53 PUSH EBX
00507CAB |. 33D2 XOR EDX,EDX
00507CAD |. 8955 F0 MOV DWORD PTR SS:[EBP-10],EDX
00507CB0 |. 8955 F4 MOV DWORD PTR SS:[EBP-C],EDX
00507CB3 |. 8BD8 MOV EBX,EAX
00507CB5 |. 33C0 XOR EAX,EAX
00507CB7 |. 55 PUSH EBP
00507CB8 |. 68 857D5000 PUSH ePaper.00507D85
00507CBD |. 64:FF30 PUSH DWORD PTR FS:[EAX]
00507CC0 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
00507CC3 |. 33D2 XOR EDX,EDX
00507CC5 |. 8B83 70030000 MOV EAX,DWORD PTR DS:[EBX+370]
00507CCB |. E8 8C35F3FF CALL ePaper.0043B25C
00507CD0 |. C783 CC030000 >MOV DWORD PTR DS:[EBX+3CC],4
00507CDA |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
00507CDD |. A1 1C855300 MOV EAX,DWORD PTR DS:[53851C]
00507CE2 |. E8 D9EEEFFF CALL ePaper.00406BC0
00507CE7 |. 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]
00507CEA |. 8B83 08030000 MOV EAX,DWORD PTR DS:[EBX+308]
00507CF0 |. E8 CFECF6FF CALL ePaper.004769C4
00507CF5 |. FFB3 C4030000 PUSH DWORD PTR DS:[EBX+3C4]
00507CFB |. FFB3 C0030000 PUSH DWORD PTR DS:[EBX+3C0]
00507D01 |. E8 EA67FCFF CALL ePaper.004CE4F0
00507D06 |. 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
00507D09 |. 8955 FC MOV DWORD PTR SS:[EBP-4],EDX
00507D0C |. FF75 FC PUSH DWORD PTR SS:[EBP-4] ; /Arg2
00507D0F |. FF75 F8 PUSH DWORD PTR SS:[EBP-8] ; |Arg1
00507D12 |. 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10] ; |
00507D15 |. E8 D218F0FF CALL ePaper.004095EC ; \ePaper.004095EC
00507D1A |. 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10]
00507D1D |. 8B83 44030000 MOV EAX,DWORD PTR DS:[EBX+344]
00507D23 |. E8 9CECF6FF CALL ePaper.004769C4
00507D28 |. FFB3 C4030000 PUSH DWORD PTR DS:[EBX+3C4] //参数
00507D2E |. FFB3 C0030000 PUSH DWORD PTR DS:[EBX+3C0] //参数
00507D34 |. FF75 FC PUSH DWORD PTR SS:[EBP-4] //参数
00507D37 |. FF75 F8 PUSH DWORD PTR SS:[EBP-8] //参数
00507D3A |. B0 01 MOV AL,1
00507D3C |. E8 D366FCFF CALL ePaper.004CE414 //写注册表的CALL
00507D41 |. 8B15 3C845300 MOV EDX,DWORD PTR DS:[53843C] ; ePaper.00539E98
00507D47 |. 8802 MOV BYTE PTR DS:[EDX],AL
00507D49 |. 33D2 XOR EDX,EDX
00507D4B |. 8B83 04030000 MOV EAX,DWORD PTR DS:[EBX+304]
00507D51 |. 8B08 MOV ECX,DWORD PTR DS:[EAX]
00507D53 |. FF51 64 CALL DWORD PTR DS:[ECX+64]
00507D56 |. 33D2 XOR EDX,EDX
00507D58 |. 8B83 0C030000 MOV EAX,DWORD PTR DS:[EBX+30C]
00507D5E |. 8B08 MOV ECX,DWORD PTR DS:[EAX]
00507D60 |. FF51 64 CALL DWORD PTR DS:[ECX+64]
00507D63 |. 8BC3 MOV EAX,EBX
00507D65 |. E8 E6F6FFFF CALL ePaper.00507450
00507D6A |. 33C0 XOR EAX,EAX
00507D6C |. 5A POP EDX
00507D6D |. 59 POP ECX
00507D6E |. 59 POP ECX
00507D6F |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
00507D72 |. 68 8C7D5000 PUSH ePaper.00507D8C
00507D77 |> 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
00507D7A |. BA 02000000 MOV EDX,2
00507D7F |. E8 A4CCEFFF CALL ePaper.00404A28
00507D84 \. C3 RETN
004CE414 /$ 55 PUSH EBP
004CE415 |. 8BEC MOV EBP,ESP
004CE417 |. 83C4 F8 ADD ESP,-8
004CE41A |. 53 PUSH EBX
004CE41B |. 56 PUSH ESI
004CE41C |. 33D2 XOR EDX,EDX
004CE41E |. 8955 F8 MOV DWORD PTR SS:[EBP-8],EDX
004CE421 |. 8845 FF MOV BYTE PTR SS:[EBP-1],AL
004CE424 |. 33C0 XOR EAX,EAX
004CE426 |. 55 PUSH EBP
004CE427 |. 68 ABE44C00 PUSH ePaper.004CE4AB
004CE42C |. 64:FF30 PUSH DWORD PTR FS:[EAX]
004CE42F |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
004CE432 |. 33DB XOR EBX,EBX
004CE434 |. FF75 14 PUSH DWORD PTR SS:[EBP+14]
004CE437 |. FF75 10 PUSH DWORD PTR SS:[EBP+10]
004CE43A |. E8 B1000000 CALL ePaper.004CE4F0
004CE43F |. 3B55 0C CMP EDX,DWORD PTR SS:[EBP+C]
004CE442 |. 75 07 JNZ SHORT ePaper.004CE44B
004CE444 |. 3B45 08 CMP EAX,DWORD PTR SS:[EBP+8]
004CE447 |. 75 02 JNZ SHORT ePaper.004CE44B
004CE449 |. B3 01 MOV BL,1
004CE44B |> 807D FF 00 CMP BYTE PTR SS:[EBP-1],0
004CE44F |. 74 44 JE SHORT ePaper.004CE495
004CE451 |. B2 01 MOV DL,1
004CE453 |. A1 68024500 MOV EAX,DWORD PTR DS:[450268]
004CE458 |. E8 0B1FF8FF CALL ePaper.00450368
004CE45D |. 8BF0 MOV ESI,EAX
004CE45F |. B1 01 MOV CL,1
004CE461 |. BA C4E44C00 MOV EDX,ePaper.004CE4C4 ; ASCII "\Software\eNation\ePaper"
004CE466 |. 8BC6 MOV EAX,ESI
004CE468 |. E8 FF1FF8FF CALL ePaper.0045046C
004CE46D |. 84C0 TEST AL,AL
004CE46F |. 74 1D JE SHORT ePaper.004CE48E
004CE471 |. FF75 0C PUSH DWORD PTR SS:[EBP+C] ; /Arg2
004CE474 |. FF75 08 PUSH DWORD PTR SS:[EBP+8] ; |Arg1
004CE477 |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8] ; |
004CE47A |. E8 6DB1F3FF CALL ePaper.004095EC ; \ePaper.004095EC
004CE47F |. 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8] //正确的注册码显示在这里。
004CE482 |. BA E8E44C00 MOV EDX,ePaper.004CE4E8 ; ASCII "RegCode"
004CE487 |. 8BC6 MOV EAX,ESI
004CE489 |. E8 7A21F8FF CALL ePaper.00450608 //在此可做内存注册机
004CE48E |> 8BC6 MOV EAX,ESI
004CE490 |. E8 7B56F3FF CALL ePaper.00403B10
004CE495 |> 33C0 XOR EAX,EAX
004CE497 |. 5A POP EDX
004CE498 |. 59 POP ECX
004CE499 |. 59 POP ECX
004CE49A |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
004CE49D |. 68 B2E44C00 PUSH ePaper.004CE4B2
004CE4A2 |> 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
004CE4A5 |. E8 5A65F3FF CALL ePaper.00404A04
004CE4AA \. C3 RETN
004CE4AB .^E9 F45DF3FF JMP ePaper.004042A4
004CE4B0 .^EB F0 JMP SHORT ePaper.004CE4A2
004CE4B2 . 8BC3 MOV EAX,EBX
004CE4B4 . 5E POP ESI
004CE4B5 . 5B POP EBX
004CE4B6 . 59 POP ECX
004CE4B7 . 59 POP ECX
004CE4B8 . 5D POP EBP
004CE4B9 . C2 1000 RETN 10
//以下注册码方式验证模块
005074E8 . 55 PUSH EBP
005074E9 . 8BEC MOV EBP,ESP
005074EB . B9 0F000000 MOV ECX,0F
005074F0 > 6A 00 PUSH 0
005074F2 . 6A 00 PUSH 0
005074F4 . 49 DEC ECX
005074F5 .^75 F9 JNZ SHORT ePaper.005074F0
005074F7 . 51 PUSH ECX
005074F8 . 53 PUSH EBX
005074F9 . 56 PUSH ESI
005074FA . 57 PUSH EDI
005074FB . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
005074FE . 33C0 XOR EAX,EAX
00507500 . 55 PUSH EBP
00507501 . 68 23795000 PUSH ePaper.00507923
00507506 . 64:FF30 PUSH DWORD PTR FS:[EAX]
00507509 . 64:8920 MOV DWORD PTR FS:[EAX],ESP
0050750C . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0050750F . 8B80 04030000 MOV EAX,DWORD PTR DS:[EAX+304]
00507515 . B2 01 MOV DL,1
00507517 . 8B08 MOV ECX,DWORD PTR DS:[EAX]
00507519 . FF51 64 CALL DWORD PTR DS:[ECX+64]
0050751C . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0050751F . 8B80 0C030000 MOV EAX,DWORD PTR DS:[EAX+30C]
00507525 . B2 01 MOV DL,1
00507527 . 8B08 MOV ECX,DWORD PTR DS:[EAX]
00507529 . FF51 64 CALL DWORD PTR DS:[ECX+64]
0050752C . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0050752F . 8B80 CC030000 MOV EAX,DWORD PTR DS:[EAX+3CC]
00507535 . 48 DEC EAX ; Switch (cases 1..6)
00507536 . 74 11 JE SHORT ePaper.00507549
00507538 . 48 DEC EAX
00507539 . 74 74 JE SHORT ePaper.005075AF
0050753B . 83E8 04 SUB EAX,4
0050753E . 0F84 C0010000 JE ePaper.00507704
00507544 . E9 6D030000 JMP ePaper.005078B6
00507549 > 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; Case 1 of switch 00507535
0050754C . 8B80 38030000 MOV EAX,DWORD PTR DS:[EAX+338]
00507552 . 8B10 MOV EDX,DWORD PTR DS:[EAX]
00507554 . FF92 C8000000 CALL DWORD PTR DS:[EDX+C8]
0050755A . 84C0 TEST AL,AL
0050755C . 74 37 JE SHORT ePaper.00507595
0050755E . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00507561 . FFB0 C4030000 PUSH DWORD PTR DS:[EAX+3C4] ; /Arg2
00507567 . FFB0 C0030000 PUSH DWORD PTR DS:[EAX+3C0] ; |Arg1
0050756D . 8D45 CC LEA EAX,DWORD PTR SS:[EBP-34] ; |
00507570 . E8 7720F0FF CALL ePaper.004095EC ; \ePaper.004095EC
00507575 . 8B55 CC MOV EDX,DWORD PTR SS:[EBP-34]
00507578 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0050757B . 8B80 1C030000 MOV EAX,DWORD PTR DS:[EAX+31C]
00507581 . E8 3EF4F6FF CALL ePaper.004769C4
00507586 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00507589 . C780 CC030000 >MOV DWORD PTR DS:[EAX+3CC],2
00507593 . EB 0D JMP SHORT ePaper.005075A2
00507595 > 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00507598 . C780 CC030000 >MOV DWORD PTR DS:[EAX+3CC],6
005075A2 > 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
005075A5 . E8 A6FEFFFF CALL ePaper.00507450
005075AA . E9 07030000 JMP ePaper.005078B6
005075AF > 8D55 C8 LEA EDX,DWORD PTR SS:[EBP-38] ; Case 2 of switch 00507535
005075B2 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
005075B5 . 8B80 20030000 MOV EAX,DWORD PTR DS:[EAX+320]
005075BB . E8 D4F3F6FF CALL ePaper.00476994
005075C0 . 837D C8 00 CMP DWORD PTR SS:[EBP-38],0
005075C4 . 75 12 JNZ SHORT ePaper.005075D8
005075C6 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
005075C9 . C780 CC030000 >MOV DWORD PTR DS:[EAX+3CC],5
005075D3 . E9 D5000000 JMP ePaper.005076AD
005075D8 > 33C0 XOR EAX,EAX
005075DA . 55 PUSH EBP
005075DB . 68 96765000 PUSH ePaper.00507696
005075E0 . 64:FF30 PUSH DWORD PTR FS:[EAX]
005075E3 . 64:8920 MOV DWORD PTR FS:[EAX],ESP
005075E6 . 8D55 C4 LEA EDX,DWORD PTR SS:[EBP-3C]
005075E9 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
005075EC . 8B80 20030000 MOV EAX,DWORD PTR DS:[EAX+320]
005075F2 . E8 9DF3F6FF CALL ePaper.00476994
005075F7 . 8B45 C4 MOV EAX,DWORD PTR SS:[EBP-3C]
005075FA . E8 B120F0FF CALL ePaper.004096B0
005075FF . 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
00507602 . 8955 F4 MOV DWORD PTR SS:[EBP-C],EDX
00507605 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00507608 . FFB0 C4030000 PUSH DWORD PTR DS:[EAX+3C4] //参数
0050760E . FFB0 C0030000 PUSH DWORD PTR DS:[EAX+3C0] //参数
00507614 . FF75 F4 PUSH DWORD PTR SS:[EBP-C] //参数
00507617 . FF75 F0 PUSH DWORD PTR SS:[EBP-10] //参数
0050761A B0 01 MOV AL,1 //爆破法:可将以下两句交换一下
0050761C E8 F36DFCFF CALL ePaper.004CE414 //注册码验证CALL
00507621 8B15 3C845300 MOV EDX,DWORD PTR DS:[53843C] ; ePaper.00539E98
00507627 . 8802 MOV BYTE PTR DS:[EDX],AL //置注册标志
00507629 . A1 3C845300 MOV EAX,DWORD PTR DS:[53843C]
0050762E . 8038 00 CMP BYTE PTR DS:[EAX],0 //为0即为假码
00507631 . 74 4C JE SHORT ePaper.0050767F
00507633 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00507636 . C780 CC030000 >MOV DWORD PTR DS:[EAX+3CC],4
00507640 . FF75 F4 PUSH DWORD PTR SS:[EBP-C] ; /Arg2
00507643 . FF75 F0 PUSH DWORD PTR SS:[EBP-10] ; |Arg1
00507646 . 8D45 C0 LEA EAX,DWORD PTR SS:[EBP-40] ; |
00507649 . E8 9E1FF0FF CALL ePaper.004095EC ; \ePaper.004095EC
0050764E . 8B55 C0 MOV EDX,DWORD PTR SS:[EBP-40]
00507651 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00507654 . 8B80 44030000 MOV EAX,DWORD PTR DS:[EAX+344]
0050765A . E8 65F3F6FF CALL ePaper.004769C4
0050765F . 8D55 BC LEA EDX,DWORD PTR SS:[EBP-44]
00507662 . A1 1C855300 MOV EAX,DWORD PTR DS:[53851C]
00507667 . E8 54F5EFFF CALL ePaper.00406BC0
0050766C . 8B55 BC MOV EDX,DWORD PTR SS:[EBP-44]
0050766F . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00507672 . 8B80 08030000 MOV EAX,DWORD PTR DS:[EAX+308]
00507678 . E8 47F3F6FF CALL ePaper.004769C4
0050767D . EB 0D JMP SHORT ePaper.0050768C
0050767F > 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00507682 . C780 CC030000 >MOV DWORD PTR DS:[EAX+3CC],5
0050768C > 33C0 XOR EAX,EAX
0050768E . 5A POP EDX
0050768F . 59 POP ECX
00507690 . 59 POP ECX
00507691 . 64:8910 MOV DWORD PTR FS:[EAX],EDX
00507694 . EB 17 JMP SHORT ePaper.005076AD
00507696 .^E9 55C9EFFF JMP ePaper.00403FF0
总结:E族百变桌面7.2注册流程分析如下:
1、检查注册表中有无注册码,没有及注册码为假码均置注册标志为0,注册码为真则置注册标志为1;
2、不管是否注册,在菜单中选“升级到正式版”都会执行005074A0的CALL再根据注册标志判断:为0,为0即未注册,执行未注册窗口;为1即已注册,执行升级成功窗口,并将正确的注册码显示并写入注册表(00507CA4的CALL)。
3、未注册有两种方式:认证码方式,向网络发认证码,确认正确,执行升级成功窗口,并将正确的注册码显示并写入注册表。(00507CA4的CALL)。注册码方式,调用005074E8的CALL,不正确则升级失败,确认正确,执行升级成功窗口,并将你输入的注册码显示并写入注册表。所以在这里修改跳转的话写入的是假码,但只要再在菜单中选“升级到正式版”就又会自动注册。
4、造成这样注册的原因与认证码方式注册和共用CALL有关。
5、破解难度:易。注册认证流程应加以改进。