• 标 题: E族百变桌面7.2注册流程分析
  • 作 者:jney2
  • 时 间:2005-01-21 15:44

标题: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、破解难度:易。注册认证流程应加以改进。