初學者,不知道有沒有機會進入[CCG]? 附:SNAGIT32 5.10破解。 (5千字)

看雪資料發表於2000-09-28

熬夜寫了第一篇破解教程,希望能敲開(不是敲破,^-^)[CCG]的大門,不足之處還望SUN.BIRD[CCG]及各位大客批評指正。
snagit 32 v5.10
SnagIt 可以方便快速地擷取 Windows 桌面上的任何內容,它可以捲動 Web 頁面供你一次擷取,可以捕捉影片影像,還可以抓取文字內容。 --我最欣賞的就是這點。
下載:URL ftp://263.idp.com.cn/pub/newsoft/graphics/grp-cap/snagit.exe
工具: Trw2k 1.22,w32dsm。

先來破解snagit32.exe:

輸入任意註冊碼後,下斷點hmemcpy,斷住後搜尋這個字串地址為xxxxxxxx,下斷點bpm xxxxxxx。再斷後到處找找,會看到下面的內容:

:00447EA6 85C0                    test eax, eax
:00447EA8 8945EC                  mov dword ptr [ebp-14], eax
:00447EAB 0F84DD020000            je 0044818E
:00447EB1 83FF0E                  cmp edi, 0000000E
:00447EB4 0F82C3020000            jb 0044817D                // 檢查原始註冊碼長度,不能小於0x0E(14)。

:00447EF3 FF1508C44A00            Call dword ptr [004AC408] //過濾掉註冊碼中的-%@#^&*……),長度-〉eax
:00447EF9 6A31                    push 00000031                
:00447EFB 83F80E                  cmp eax, 0000000E         //看看這個長度是否等於14
:00447EFE 59                      pop ecx
:00447EFF 0F8598000000            jne 00447F9D                //不相等的話,註冊失敗
:00447F05 8B55EC                  mov edx, dword ptr [ebp-14]
:00447F08 807A0C38                cmp byte ptr [edx+0C], 38 //註冊碼的倒數第二位= '8'?
:00447F0C 8A420D                  mov al, byte ptr [edx+0D] 
:00447F0F 0F8588000000            jne 00447F9D                //跳就按新使用者處理,不跳則可能是老使用者
:00447F15 3C34                    cmp al, 34                //---------------------------------->
:00447F17 740C                    je 00447F25                //倒數第一位等於2,3,4則為老使用者
:00447F19 3C33                    cmp al, 33
:00447F1B 7408                    je 00447F25                
:00447F1D 3C32                    cmp al, 32
:00447F1F 7404                    je 00447F25              //<----------------------------------
:00447F21 3AC1                    cmp al, cl                
:00447F23 7578                    jne 00447F9D                //跳就是新使用者

就按照新使用者追下去吧

:00448078 E8AAC60000              call 00454727         <---密碼在此驗證
:0044807D 8BD8                    mov ebx, eax      <---注意:這裡將eax-->ebx

* Possible Reference to Dialog: DialogID_0098, CONTROL_ID:00FF, ""
                                  |
:0044807F 6AFF                    push FFFFFFFF
:00448081 8D4DF0                  lea ecx, dword ptr [ebp-10]
:00448084 895DE4                  mov dword ptr [ebp-1C], ebx
:00448087 E826FA0300              call 00487AB2
:0044808C 80FB01                  cmp bl, 01        <---到這裡才判斷bl是否為1
:0044808F 0F85BF000000            jne 00448154      <---不等就註冊失敗

所以我們要跟進" :00448078 E8AAC60000 call 00454727" 這個call看看哪裡改變了eax。

註冊碼的判斷比較繁瑣,當我發現下面的xor eax,eax後,便放棄了找註冊碼的念頭,只要改2個位元組就可以完工,何必浪費青春呢?

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0044793D(C)
|
:0044794F 33C0                    xor eax, eax            //到這裡之前eax已經是0了,就改它好了
                                                          //改為40(inc eax) 90 (nop)
:00447951 EBF7                    jmp 0044794A
:00447953 B839814A00              mov eax, 004A8139
:00447958 E8BF570200              call 0046D11C
:0044795D 51                      push ecx

到這裡,snagit32.exe已經破掉了:
有下面兩個註冊方法:
1。把上面所提到的關鍵點都修改一下,這樣註冊碼可以隨意輸入,長度,內容都不限。
2。只修改2個位元組:
        s:  33C0EBF7B839814A00
        r:  4090--------------
  然後在輸入註冊碼的時候輸入:xxxxxxxxxxxxAx (長度14,其中x可以為任意字母或數字,A為不等於8的任意字母或數字)
                
再來破studio.exe.
找到
:0041D457 C784242C01000000000000  mov dword ptr [esp+0000012C], 00000000
:0041D462 837AF80E                cmp dword ptr [edx-08], 0000000E  //判斷你剛剛在snagit主輸入的註冊碼長度>=14
:0041D466 7C6C                    jl 0041D4D4                         //小於就抱歉了    改為9090
:0041D468 8B542410                mov edx, dword ptr [esp+10]

再向下找
:0041D4B5 E856000000              call 0041D510                //這個call裡面判斷你的註冊碼正確與否。
                                                            //如果有朋友想找註冊碼,我想在這邊找比較好。    
:0041D4BA 3C01                    cmp al, 01                
:0041D4BC 7505                    jne 0041D4C3                //跳出就over,改為9090
:0041D4BE BB01000000              mov ebx, 00000001

到這裡,studio.exe已經破掉了:
        s:  f80e7c6c8b542410  (如果你的密碼本身輸的就是14位,這裡不用改了)
        r:  ----9090--------
        s:  3c017505bb010000
        r:     ----9090--------
        
還有一點要說說,在snagit32中註冊成功後會提示輸入使用者名稱,它會自動將你登陸的使用者名稱字放在編輯框內。因此一定用到了這樣的一個win32 api,在w32dsm反編譯結果中查詢get,結果一下子就找到了:GetUserName((得到登陸使用者名稱),和GetComputerName(得到機器名)。昨天那位提問怎樣在程式中關聯開啟文件的[CCG]的朋友,你也可以用這樣的方法,直接搜尋Reg,會找到幾乎所有的操作登錄檔的win32 api,如下:
 
  Import Module 009: ADVAPI32.dll

Addr:0017E894 hint(015E) Name: RegCreateKeyA
Addr:0017E8A4 hint(017B) Name: RegQueryValueExA
Addr:0017E92E hint(00AA) Name: GetFileSecurityA
Addr:0017E844 hint(015B) Name: RegCloseKey
Addr:0017E852 hint(0172) Name: RegOpenKeyExA
Addr:0017E862 hint(016A) Name: RegEnumValueA
Addr:0017E872 hint(017A) Name: RegQueryValueA
Addr:0017E884 hint(0185) Name: RegSetValueA
Addr:0017E90C hint(0166) Name: RegEnumKeyA
Addr:0017E91A hint(019B) Name: SetFileSecurityA
Addr:0017E8B8 hint(0186) Name: RegSetValueExA
Addr:0017E8CA hint(015F) Name: RegCreateKeyExA
Addr:0017E8DC hint(0164) Name: RegDeleteValueA
Addr:0017E8EE hint(0162) Name: RegDeleteKeyA
Addr:0017E8FE hint(0171) Name: RegOpenKeyA

這樣再去查msdn,目的性就強的多。:)

                                                            傲世男兒
                                                                09/28/2000

相關文章