超级电脑伴侣1.20

发表于:2007-05-25来源:作者:点击数: 标签:http超级电脑伴侣1.20下载
【下载页面】 http://www.skycn.com/soft/12130.html" 【作者声明】:本人发表这篇文章只是为了学习和研究!!!请不用于商业用途或是将本文方法制作的注册机任意传播,读者看了文章后所做的事情与我无关,我也不会负责,请读者看了文章后三思而后行!最后希望大家

下载页面】

http://www.skycn.com/soft/12130.html"
【作者声明】:本人发表这篇文章只是为了学习和研究!!!请不用于商业用途或是将本文方法制作的注册机任意传播,读者看了文章后所做的事情与我无关,我也不会负责,请读者看了文章后三思而后行!最后希望大家在经济基础好的时候,支持共享软件!

【破解工具】:Ollydbg  w32Dasm  peid  UPXUnpack
—————————————————————————————————  
【过    程】:
用peid查出是UPX加的壳,用UPXUnpack轻松脱之.
用w32Dasm反之,根据参考字串很快找关键004D5A5B!
因为脱壳后的主程序不能运行,所以用Ollydbg加载跟踪!
加载后按F9运行,选择注册-->输入用户名Yock和注册码987654321-->下断点004D5A5B-->按注册认证拦下:


:004D5A47 68245C4D00              push 004D5C24
:004D5A4C 64FF30                  push dword ptr fs:[eax]
:004D5A4F 648920                  mov dword ptr fs:[eax], esp
:004D5A52 8D55FC                  lea edx, dword ptr [ebp-04]
:004D5A55 8B8320030000            mov eax, dword ptr [ebx+00000320]
:004D5A5B E8E44BF9FF              call 0046A644
                                 //取我输入的注册码!

:004D5A60 8B45FC                  mov eax, dword ptr [ebp-04]
                                 //我输入的注册码"987654321"

:004D5A63 50                      push eax
:004D5A64 8D55F4                  lea edx, dword ptr [ebp-0C]
:004D5A67 8B831C030000            mov eax, dword ptr [ebx+0000031C]
:004D5A6D E8D24BF9FF              call 0046A644
                                 //取机器码!

:004D5A72 8B45F4                  mov eax, dword ptr [ebp-0C]
                                 //这里是机器码!

:004D5A75 50                      push eax
:004D5A76 8D55F0                  lea edx, dword ptr [ebp-10]
:004D5A79 8B8318030000            mov eax, dword ptr [ebx+00000318]
:004D5A7F E8C04BF9FF              call 0046A644
                                 //取用户名

:004D5A84 8B45F0                  mov eax, dword ptr [ebp-10]
                                 //这里是用户名Yock

:004D5A87 8D4DF8                  lea ecx, dword ptr [ebp-08]
:004D5A8A 5A                      pop edx
                                 //这里是机器码!

:004D5A8B E84CF7FFFF              call 004D51DC
                                 //关键,注册码是怎样练成的!
                                 //我追...

:004D5A90 8B55F8                  mov edx, dword ptr [ebp-08]
                                 //这里就是真的注册码了!

:004D5A93 58                      pop eax
                                 //这里是我输入的注册码!

:004D5A94 E8ABF2F2FF              call 00404D44
                                 //这个CALL是比较的!

:004D5A99 0F8515010000            jne 004D5BB4
                                 //注册码正确的话就不跳!
                                 //反之就死掉了...

:004D5A9F B201                    mov dl, 01

* Possible StringData Ref from Data Obj ->""
                                 |
:004D5AA1 A11CC34300              mov eax, dword ptr [0043C31C]
:004D5AA6 E87169F6FF              call 0043C41C
:004D5AAB 8BF0                    mov esi, eax
:004D5AAD BA02000080              mov edx, 80000002
:004D5AB2 8BC6                    mov eax, esi
:004D5AB4 E8036AF6FF              call 0043C4BC
:004D5AB9 B101                    mov cl, 01

* Possible StringData Ref from Data Obj ->"SOFTWARE\Super Computer Companion"

-----------------------------------------------------------------
上面004D5A8B的CALL来到这里(这一段我是用Ollydbg复制的),好长啊...
这里就是把用户名和机器码计算正确注册码的过程了!
可惜自己的基本功差劲,所以等你来帮偶分析!嘻嘻...

004D51DC    55              PUSH    EBP
004D51DD    8BEC            MOV     EBP, ESP
004D51DF    51              PUSH    ECX
004D51E0    B9 0B000000     MOV     ECX, 0B
004D51E5    6A 00           PUSH    0
004D51E7    6A 00           PUSH    0
004D51E9    49              DEC     ECX
004D51EA  ^ 75 F9           JNZ     SHORT SUPERCC.004D51E5
.................................
..........................

004D5361    8B55 B0         MOV     EDX, DWORD PTR SS:[EBP-50]
004D5364    8BC3            MOV     EAX, EBX
004D5366    E8 95F8F2FF     CALL    SUPERCC.00404C00
004D536B    FF75 F4         PUSH    DWORD PTR SS:[EBP-C]
004D536E    FF75 F0         PUSH    DWORD PTR SS:[EBP-10]
004D5371    8D45 AC         LEA     EAX, DWORD PTR SS:[EBP-54]
004D5374    E8 1341F3FF     CALL    SUPERCC.0040948C
004D5379    8B45 AC         MOV     EAX, DWORD PTR SS:[EBP-54]
004D537C    E8 77F8F2FF     CALL    SUPERCC.00404BF8
004D5381    8BF0            MOV     ESI, EAX
004D5383    8B45 CC         MOV     EAX, DWORD PTR SS:[EBP-34]       ; SUPERCC.004D5C24
                           //当前取了4位后的机器码!

004D5386    E8 6DF8F2FF     CALL    SUPERCC.00404BF8
                           //当前取了4位后机器码的位数!

004D538B    3BF0            CMP     ESI, EAX
                           //ESI=5;当前取了4位后的机器码的位数比较!

004D538D  ^ 0F8E CCFEFFFF   JLE     SUPERCC.004D525F
                           //小于或等于就跳回去继续...

004D5393    8B45 CC         MOV     EAX, DWORD PTR SS:[EBP-34]       ; SUPERCC.004D5C24
004D5396    E8 5DF8F2FF     CALL    SUPERCC.00404BF8
004D539B    85C0            TEST    EAX, EAX
004D539D    74 49           JE      SHORT SUPERCC.004D53E8
004D539F    8B45 CC         MOV     EAX, DWORD PTR SS:[EBP-34]       ; SUPERCC.004D5C24
004D53A2    E8 3541F3FF     CALL    SUPERCC.004094DC
004D53A7    99              CDQ
004D53A8    8945 D8         MOV     DWORD PTR SS:[EBP-28], EAX
004D53AB    8955 DC         MOV     DWORD PTR SS:[EBP-24], EDX
004D53AE    FF75 F4         PUSH    DWORD PTR SS:[EBP-C]
....................
.............

004D545C    8D45 F8         LEA     EAX, DWORD PTR SS:[EBP-8]
004D545F    BA 02000000     MOV     EDX, 2
004D5464    E8 F3F4F2FF     CALL    SUPERCC.0040495C
004D5469    C3              RETN
004D546A  ^ E9 49EEF2FF     JMP     SUPERCC.004042B8
004D546F  ^ EB DE           JMP     SHORT SUPERCC.004D544F
004D5471    5E              POP     ESI                              ; SUPERCC.004D5A90
004D5472    5B              POP     EBX                              ; SUPERCC.004D5A90
004D5473    8BE5            MOV     ESP, EBP
004D5475    5D              POP     EBP                              ; SUPERCC.004D5A90
004D5476    C3              RETN
                           //来到这里,整个计算过程划上了完美的句号!

--------------------------------------------------------------------

后来用注册后的"超级电脑伴侣V1.20"上网,才发现了这个暗桩!

:00507198 55                      push ebp
:00507199 8BEC                    mov ebp, esp
:0050719B 6A00                    push 00000000
:0050719D 53                      push ebx
:0050719E 8BD8                    mov ebx, eax
:005071A0 33C0                    xor eax, eax
:005071A2 55                      push ebp
:005071A3 684B725000              push 0050724B
:005071A8 64FF30                  push dword ptr fs:[eax]
:005071AB 648920                  mov dword ptr fs:[eax], esp
:005071AE 33D2                    xor edx, edx
:005071B0 8B838C030000            mov eax, dword ptr [ebx+0000038C]
:005071B6 E845F3F2FF              call 00436500
:005071BB 833D48DA500000          cmp dword ptr [0050DA48], 00000000
                                 //是否官方正式的注册码比较标志!

:005071C2 7571                    jne 00507235
                                 //把这里的7571改成EB71就可以跳过去了!

:005071C4 33C0                    xor eax, eax
:005071C6 8983C8060000            mov dword ptr [ebx+000006C8], eax
:005071CC B201                    mov dl, 01
:005071CE 8B8380030000            mov eax, dword ptr [ebx+00000380]
:005071D4 E83F56F7FF              call 0047C818
:005071D9 6A00                    push 00000000

* Possible StringData Ref from Data Obj ->"否"
                                 |
:005071DB 6860725000              push 00507260
:005071E0 6A03                    push 00000003
:005071E2 6A00                    push 00000000
:005071E4 6A00                    push 00000000
:005071E6 8D55FC                  lea edx, dword ptr [ebp-04]
:005071E9 A1A8AE5000              mov eax, dword ptr [0050AEA8]
:005071EE 8B00                    mov eax, dword ptr [eax]
:005071F0 E87F2FF8FF              call 0048A174
:005071F5 8D45FC                  lea eax, dword ptr [ebp-04]

* Possible StringData Ref from Data Obj ->"-正式注册"
                                 |
:005071F8 BA6C725000              mov edx, 0050726C
:005071FD E8FED9EFFF              call 00404C00
:00507202 8B55FC                  mov edx, dword ptr [ebp-04]

* Possible StringData Ref from Data Obj ->"立即注册"
                                 |
:00507205 B980725000              mov ecx, 00507280

* Possible StringData Ref from Data Obj ->"    您所使用的注册码为非官方正式注册码。如果"
                                       ->"您认为超级电脑伴侣确实好用,请您注册成为正式"
                                       ->"用户。现在想要进行注册吗?"
:0050720A B894725000              mov eax, 00507294
:0050720F E8043BFCFF              call 004CAD18
:00507214 85C0                    test eax, eax
:00507216 741D                    je 00507235
:00507218 6A01                    push 00000001
:0050721A 6A00                    push 00000000
:0050721C 6A00                    push 00000000

* Possible StringData Ref from Data Obj ->"

http://supercc.softreg.com.cn/product.asp?id=" ";
                                       ->"62E0FE84-DD73-4BBF-869E-3360FE15F381/"
------------------------------------------------------------------
【总    结】:
内存主厕鸡:
中断地址:004D5A93
中断次数:1
字节长度:1
第一字节:58
注册码-->内存方式-->寄存器-->edx

注册信息保存在注册表:
HKEY_LOCAL_MACHINE\SOFTWARE\Super Computer Companion\Register: "Yock"
HKEY_LOCAL_MACHINE\SOFTWARE\Super Computer Companion\RegCode: "SCC-1021484654312051291159771173253605343025"
------------------------------------------------------------------
可惜自己的基本功差劲,所以算法等你来帮偶分析!嘻嘻...
最后再说一句,就是这个程序脱壳后不能运行,所以我知道改哪里跳过网络验证的暗桩,但自己没有本事改!
如果你愿意帮我的话,教教我怎么完美脱掉他的壳,谢谢...
最后在这里真心感谢你花了那么多时间看这篇文章!谢谢了...

原文转自:http://www.ltesting.net