世紀葵花--桌面直播錄影機系統5.2筆記

看雪資料發表於2003-06-18

【前    言】:這個軟體有很多地方不明白,所以發出來和大家探討一下!(在這裡也要謝謝安靖)

【軟體名稱】:世紀葵花--桌面直播錄影機系統5.2

【下載頁面】:http://www.softreg.com.cn/shareware_view.asp?id=/3E781F2B-1927-46BD-BB4E-567A2FE09680/

【軟體大小】:...

【應用平臺】:WIN9X/WINNT/WIN2K/WINXP

【軟體簡介】: 這是一款可以實時捕捉計算機桌面視、音訊,並在佔用極低網路頻寬情況下,進行高質量流式直播、錄影的軟體。利用葵花獨有的壓縮演算法、預測編碼和動態編碼技術,高畫質晰記錄計算機操作過程和滑鼠運動軌跡的影片和音訊,可靈活控制網路傳輸的碼流,使用瀏覽器(IE或Netscape)就可以收看。可廣泛應用於學校網路教學,企事業培訓,政府會議直播,公司遠端產品演示、技術支援,公司製作產品Demo光碟等多種應用。

【軟體限制】:試用30天

【文章作者】:輝仔Yock[DFCG][YCG]

【作者宣告】:本人發表這篇文章只是為了學習和研究!!!請不用於商業用途或是將本文方法制作的序號產生器任意傳播,讀者看了文章後所做的事情與我無關,我也不會負責,請讀者看了文章後三思而後行!最後希望大家在經濟基礎好的時候,支援共享軟體!

【破解工具】:OLLYDBG  W32Dasm  

―――――――――――――――――――――――――――――――――
【過    程】:
主程式SFCAPCaster.exe沒有加殼,事用Microsoft Visual C++ 6.0編寫的!

用W32dasm反彙編,根據參考字串很快找到關鍵!

用OLLYDBG載入SFCAPCaster.exe

選擇幫助-->註冊-->輸入使用者名稱Yock196(使用者名稱要大於5位)-->郵箱地址(可以不填,下面不做運算!-->輸入20位的假註冊碼KHSC-987654321ABCDEF(開頭五位一定要是"KHSC-")

下斷點004147D4來到下面:

:004147BF E83AE40100              call 00432BFE
                                 //這裡事取得使用者名稱位數

:004147C4 8B07                    mov eax, dword ptr [edi]
:004147C6 C744242000000000        mov [esp+20], 00000000
:004147CE 8B40F8                  mov eax, dword ptr [eax-08]
:004147D1 83F805                  cmp eax, 00000005
                                 //比較使用者名稱是否小於5位

:004147D4 7D13                    jge 004147E9
:004147D6 6A00                    push 00000000
:004147D8 6A10                    push 00000010

* Possible StringData Ref from Data Obj ->"請輸入長度大於5的使用者名稱稱"
                                 |
:004147DA 68A05B4500              push 00455BA0
:004147DF E8CF410200              call 004389B3
:004147E4 E91E010000              jmp 00414907

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004147D4(C)
|
:004147E9 8D4C2410                lea ecx, dword ptr [esp+10]
:004147ED 8D7E5C                  lea edi, dword ptr [esi+5C]
:004147F0 6A05                    push 00000005
:004147F2 51                      push ecx
:004147F3 8BCF                    mov ecx, edi
:004147F5 E8B18A0100              call 0042D2AB
:004147FA 8B00                    mov eax, dword ptr [eax]

* Possible StringData Ref from Data Obj ->"KHSC-"
                                 |
:004147FC 68985B4500              push 00455B98
:00414801 50                      push eax
:00414802 E8F59E0000              call 0041E6FC
                                 //比較註冊碼的前面五位是否"KHSC-"

:00414807 83C408                  add esp, 00000008
:0041480A 85C0                    test eax, eax
:0041480C 7511                    jne 0041481F
                                 //不是就跳下去出錯

:0041480E 8B17                    mov edx, dword ptr [edi]
:00414810 837AF814                cmp dword ptr [edx-08], 00000014
                                 //比較註冊碼是否等於20位

:00414814 0F95C0                  setne al
:00414817 84C0                    test al, al
:00414819 7504                    jne 0041481F
                                 //不是的話跳下去出錯

:0041481B 32DB                    xor bl, bl
:0041481D EB02                    jmp 00414821

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0041480C(C), :00414819(C)
|
:0041481F B301                    mov bl, 01

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041481D(U)
|
:00414821 8D4C2410                lea ecx, dword ptr [esp+10]
:00414825 E85FE60100              call 00432E89
:0041482A 84DB                    test bl, bl
:0041482C 7413                    je 00414841
                                 //輸入的註冊碼如果不符合上面的條件就不跳走!
                                 //符合反之
                                 //這裡可以說是一個暗樁,我第一次以為這樣註冊成功了!
                                 //其實不是的,符合上面的條件,但不是真的註冊碼一樣是未註冊!

:0041482E 6A00                    push 00000000
:00414830 6A10                    push 00000010

* Possible StringData Ref from Data Obj ->"註冊失敗!"
                                 |
:00414832 688C5B4500              push 00455B8C
:00414837 E877410200              call 004389B3
:0041483C E9C6000000              jmp 00414907

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041482C(C)                     //上面來到這裡!
|
......

......

......
                                 //省略一部分用處不大的程式碼

:0041488D 8D442418                lea eax, dword ptr [esp+18]
:00414891 50                      push eax
                                 //使用者名稱

:00414892 E829090000              call 004151C0
                                 //來到這裡是把我的使用者名稱經過運算後得出一串數字"298103222272636"
                                 //但是感覺上用處不大,我認為根本就沒有!

:00414897 83C40C                  add esp, 0000000C
:0041489A 50                      push eax
:0041489B 8D4C2410                lea ecx, dword ptr [esp+10]
:0041489F C644242402              mov [esp+24], 02
:004148A4 E819E70100              call 00432FC2
:004148A9 8D4C2410                lea ecx, dword ptr [esp+10]
:004148AD C644242000              mov [esp+20], 00
:004148B2 E8D2E50100              call 00432E89
:004148B7 51                      push ecx
:004148B8 8D542410                lea edx, dword ptr [esp+10]
:004148BC 8BCC                    mov ecx, esp
:004148BE 89642418                mov dword ptr [esp+18], esp
:004148C2 52                      push edx
:004148C3 E836E30100              call 00432BFE
:004148C8 8BCE                    mov ecx, esi
:004148CA E861000000              call 00414930
:004148CF 6A00                    push 00000000
:004148D1 8BCE                    mov ecx, esi
:004148D3 E838010000              call 00414A10
:004148D8 8BCE                    mov ecx, esi
:004148DA E8E1030000              call 00414CC0
                                 //根據W32Dasm的提示得知這個CALL裡面是註冊成功但出的視窗!
                                 //跟進去!

:004148DF 8BCE                    mov ecx, esi
:004148E1 E87A030000              call 00414C60
                                 //根據W32Dasm的提示得知這個CALL裡面是註冊成功但出的視窗!
                                 //跟進去!

:004148E6 8B461C                  mov eax, dword ptr [esi+1C]
:004148E9 6A00                    push 00000000
:004148EB 6A00                    push 00000000
:004148ED 6892040000              push 00000492
:004148F2 50                      push eax

* Reference To: USER32.SendMessageA, Ord:0214h
                                 |
:004148F3 FF1574654400            Call dword ptr [00446574]
                                 //這個地方是最不明白的了!
                                 //用"安靖"的註冊碼註冊就在這裡但出成功的視窗!
                                 //用我自己追出來的註冊碼,這裡是沒有反映的!但也能註冊成功!
                                 //還請高手指點!

:004148F9 8BCE                    mov ecx, esi
:004148FB E86DE00100              call 0043296D
:00414900 8BCE                    mov ecx, esi
:00414902 E81EF60100              call 00433F25
------------------------------------------------------------------
上面004148DA的CALL來到這裡:
* Referenced by a CALL at Address:
|:004148DA  
|
:00414CC0 51                      push ecx
:00414CC1 56                      push esi
:00414CC2 8BF1                    mov esi, ecx
:00414CC4 57                      push edi
:00414CC5 8D442408                lea eax, dword ptr [esp+08]
:00414CC9 6A05                    push 00000005
:00414CCB 50                      push eax
:00414CCC 8D8EF4010000            lea ecx, dword ptr [esi+000001F4]
:00414CD2 E8D4850100              call 0042D2AB
:00414CD7 8B00                    mov eax, dword ptr [eax]
:00414CD9 50                      push eax
:00414CDA E8129A0000              call 0041E6F1
:00414CDF 83C404                  add esp, 00000004
:00414CE2 8D4C2408                lea ecx, dword ptr [esp+08]
:00414CE6 8BF8                    mov edi, eax
:00414CE8 E89CE10100              call 00432E89
:00414CED 8B8EE8010000            mov ecx, dword ptr [esi+000001E8]
:00414CF3 51                      push ecx
:00414CF4 E887020000              call 00414F80
:00414CF9 83C404                  add esp, 00000004
:00414CFC 3BF8                    cmp edi, eax
                                 //關鍵比較...
                                 //EDI和EAX暫存器分別存著真假註冊碼的前五位數的十六進位制值!

:00414CFE 8986E8010000            mov dword ptr [esi+000001E8], eax
:00414D04 7509                    jne 00414D0F
                                 //這裡跳走的話就...

:00414D06 6A01                    push 00000001
:00414D08 8BCE                    mov ecx, esi
:00414D0A E8B1FEFFFF              call 00414BC0
                                 //這裡進去有三個跳轉,這三個跳轉不跳的話就出現註冊成功視窗!

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00414D04(C)
|
:00414D0F 5F                      pop edi
:00414D10 5E                      pop esi
:00414D11 59                      pop ecx
:00414D12 C3                      ret
------------------------------------------------------------------
上面004148E1的CALL來到這裡:
* Referenced by a CALL at Address:
|:004148E1  
|
:00414C60 51                      push ecx
:00414C61 56                      push esi
:00414C62 57                      push edi
:00414C63 8BF1                    mov esi, ecx
:00414C65 6A05                    push 00000005
:00414C67 8D44240C                lea eax, dword ptr [esp+0C]
:00414C6B 6A05                    push 00000005
:00414C6D 50                      push eax
:00414C6E 8D8EF4010000            lea ecx, dword ptr [esi+000001F4]
:00414C74 E820850100              call 0042D199
:00414C79 8B00                    mov eax, dword ptr [eax]
:00414C7B 50                      push eax
:00414C7C E8709A0000              call 0041E6F1
:00414C81 83C404                  add esp, 00000004
:00414C84 8D4C2408                lea ecx, dword ptr [esp+08]
:00414C88 8BF8                    mov edi, eax
:00414C8A E8FAE10100              call 00432E89
:00414C8F 8B8EEC010000            mov ecx, dword ptr [esi+000001EC]
:00414C95 51                      push ecx
:00414C96 E8B5030000              call 00415050
:00414C9B 83C404                  add esp, 00000004
:00414C9E 3BF8                    cmp edi, eax
                                 //和上面一樣,關鍵比較...
                                 //EDI和EAX暫存器分別存著真假註冊碼的前五位數的十六進位制值!

:00414CA0 8986EC010000            mov dword ptr [esi+000001EC], eax
:00414CA6 7509                    jne 00414CB1
:00414CA8 6A02                    push 00000002
:00414CAA 8BCE                    mov ecx, esi
:00414CAC E80FFFFFFF              call 00414BC0
                                 //和上面一樣
                                 //這裡進去有三個跳轉,這三個跳轉不跳的話就出現註冊成功視窗!

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00414CA6(C)
|
:00414CB1 5F                      pop edi
:00414CB2 5E                      pop esi
:00414CB3 59                      pop ecx
:00414CB4 C3                      ret
------------------------------------------------------------------
這裡就是00414CAC和00414D0A的CALL來到的地方:

* Referenced by a CALL at Addresses:
|:00414586   , :00414CAC   , :00414D0A  
|
:00414BC0 56                      push esi
:00414BC1 8BF1                    mov esi, ecx
:00414BC3 E8CCA20200              call 0043EE94
:00414BC8 8B5004                  mov edx, dword ptr [eax+04]
:00414BCB 8B442408                mov eax, dword ptr [esp+08]
:00414BCF 48                      dec eax
:00414BD0 7452                    je 00414C24
:00414BD2 48                      dec eax
:00414BD3 7436                    je 00414C0B
                                 //我追出來的正確註冊碼和"安靖"的註冊碼在這裡都跳走了!

:00414BD5 48                      dec eax
:00414BD6 0F8580000000            jne 00414C5C
:00414BDC 6A00                    push 00000000
:00414BDE 6A01                    push 00000001
:00414BE0 8BCA                    mov ecx, edx
:00414BE2 C7825802000001000000    mov dword ptr [ebx+00000258], 00000001
:00414BEC E8AFFFFEFF              call 00404BA0
:00414BF1 6A00                    push 00000000
:00414BF3 6A00                    push 00000000

* Possible StringData Ref from Data Obj ->"註冊成功, 請重新啟動程式!"
                                 |
:00414BF5 68C05B4500              push 00455BC0
:00414BFA E8B43D0200              call 004389B3
:00414BFF 6A00                    push 00000000

* Reference To: USER32.PostQuitMessage, Ord:01E0h
                                 |
:00414C01 FF1564644400            Call dword ptr [00446464]
:00414C07 5E                      pop esi
:00414C08 C20400                  ret 0004

------------------------------------------------------------------
【總    結】:
我追出的註冊碼(郵箱不填也可以):
Yock196
KHSC-3518239909*****(後面五位隨便)

安靖兄的註冊碼:
anjing
KHSC-351821842415032

註冊資訊儲存在C:\WINDOWS\SYSTEM\SysXCasterDrv.sys

用我追出來的註冊碼按註冊後沒有反應(但也能成功!)

用安靖兄的註冊碼按註冊後會彈出"註冊成功, 請重新啟動程式!"的框!

我想可能是我沒有追到核心,所以想和大家探討一下!

我問過安靖了,可是沒有解決問題!好沒頭緒,希望又朋友能幫我看看!


最後在這裡真心感謝你花了那麼多時間看這篇文章!謝謝了...


                                          2003.6.18於清遠


相關文章