初學者心得--網路傳神2.02(build 0310) (6千字)

看雪資料發表於2001-04-08

初學者心得--網路傳神2.02(build 0310)

作者:華仔
版權:China Cracking Group
時間:2001.04.07

這幾天網站有點不穩定,我還以為是我的FTP軟體有問題,一時興起把它給抓了下來,試用
後感覺還可以,就算不註冊也沒有任何限制,但視窗標題有一個“未註冊”字樣,作為一
個CRACKER來說簡直是一種恥辱,殺心頓起,搞定它。(注:白菜樂園有它的破解版本,在
這裡我們只是簡單的瞭解一下破解這類程式如何從多方面入手,如果你是老CRACKER請止步。



一、試執行:

進入註冊畫面
使用者名稱:華仔[CCG]
識別碼:855F3B3B3358CFC2A3B-7A5746F65067575673
註冊碼:1974923
單擊確定後,該軟體讓重新啟動後驗證註冊碼。

二、註冊分析:

1、在輸入使用者名稱獲取識別碼時出現一個好現象:
  -7A5746F65067575673始終未曾改變(我猜可能是機器碼),而前面的數字(暫且叫它
  使用者碼)855F3B3B3358CFC2A3B一直在改變(這說明真正的註冊碼不是唯一的)。

2、對於重新啟動後驗證註冊碼,這類軟體很多,它把這些註冊資訊寫入登錄檔或某個檔案
  在啟動軟體時再讀出並校驗。這給我們設定斷點和查詢關鍵點提供了方法。經過觀察,
  它是將註冊資訊寫入登錄檔中:

[HKEY_CURRENT_USER\Software\Kuaiftp]
"Path"="D:\\net_tool\\kuaiftp2000"
"VER"="202"
"BUILD"="0310"
"Name"="華仔[CCG]"
"SBM"="855F3B3B3358CFC2A3B-7A5746F65067575673"
"ZCM"="1974923"

    另外軟體使用次數標記在這裡:

[HKEY_CURRENT_USER\Software\Microsoft\data63]
"DATA63"="9E2E2E2E2"(不是吧,我已使用了7777次?:))
 
3、這麼長的識別碼,註冊碼也一定很長,我倒有點想打退堂鼓了,但沒辦法,到這一步只有
  “茅廁裡划船:奮(糞)勇前進”了。讓大家見笑了,本人數學一向不好,看到這麼多數
  字,就犯頭痛,老毛病。還好,我記得不知是那位學士說過,不管是暴破也好、找註冊碼
  也好,弄清演算法也好,都叫:CRACK,這樣心理才稍有點平衡感。但上面三種方法我這次
  都用到了。

三、實戰:

1、用W32dsm89反彙編後找關鍵字“ZCM”(問:沒什麼要找這個,答:因為軟體啟動後要
  讀取這個登錄檔鍵來判斷是否是真正的註冊碼),好運氣,我們找到兩個,一個是在注
  冊視窗中輸入註冊資訊後,用來讀寫登錄檔的,而另一個就是我們要用到的下面這個。

2、用TRW2000載入,設斷bpx 00529E0D,g繼續執行,程式被攔下,下bc *清除斷點:

* Possible StringData Ref from Code Obj ->"ZCM"
                                  |
:00529E0D BAD4A05200              mov edx, 0052A0D4
:00529E12 8B45F8                  mov eax, dword ptr [ebp-08]
:00529E15 E8FE7CF7FF              call 004A1B18
:00529E1A 8D45F4                  lea eax, dword ptr [ebp-0C]
:00529E1D 8B55F0                  mov edx, dword ptr [ebp-10]
:00529E20 E85BA0EDFF              call 00403E80
:00529E25 8B55F4                  mov edx, dword ptr [ebp-0C]
:00529E28 B8E0A05200              mov eax, 0052A0E0
:00529E2D E822A5EDFF              call 00404354
:00529E32 8BD8                    mov ebx, eax
:00529E34 8B45F4                  mov eax, dword ptr [ebp-0C]
:00529E37 E82CA2EDFF              call 00404068
:00529E3C 8BC8                    mov ecx, eax
:00529E3E 2BCB                    sub ecx, ebx
:00529E40 41                      inc ecx
:00529E41 8D45F4                  lea eax, dword ptr [ebp-0C]
:00529E44 8BD3                    mov edx, ebx
:00529E46 E865A4EDFF              call 004042B0
:00529E4B 8D45E8                  lea eax, dword ptr [ebp-18]
:00529E4E 8B55F4                  mov edx, dword ptr [ebp-0C]
:00529E51 E82AA0EDFF              call 00403E80
:00529E56 8D45F4                  lea eax, dword ptr [ebp-0C]
:00529E59 8B55F0                  mov edx, dword ptr [ebp-10]
:00529E5C E81FA0EDFF              call 00403E80
:00529E61 8D45F4                  lea eax, dword ptr [ebp-0C]
:00529E64 8BCB                    mov ecx, ebx
:00529E66 BA01000000              mov edx, 00000001
:00529E6B E840A4EDFF              call 004042B0
:00529E70 8D45E4                  lea eax, dword ptr [ebp-1C]
:00529E73 8B55F4                  mov edx, dword ptr [ebp-0C]
:00529E76 E805A0EDFF              call 00403E80
:00529E7B 8D55E0                  lea edx, dword ptr [ebp-20]
:00529E7E 8B45E8                  mov eax, dword ptr [ebp-18] ====>> 我們輸入的假

註冊碼
:00529E81 E8CAD4FDFF              call 00507350              ====>> 在這裡幹了一

場革命,我不想
:00529E86 8B55E0                  mov edx, dword ptr [ebp-20]        看下去,太讓

人心煩了。
:00529E89 8B45EC                  mov eax, dword ptr [ebp-14] ====>> 我們的使用者名稱
:00529E8C E8E7A2EDFF              call 00404178
:00529E91 751F                    jne 00529EB2                ====>> 使用者碼運算結

果不正確才跳,
:00529E93 8D45DC                  lea eax, dword ptr [ebp-24]        暴破時改為NOP

經分析00507350處程式碼發現(又是迴圈,又是取位,又是取反....,搞得我頭都大了),註冊


的第一部份和使用者碼相同(這麼簡單的問題???),好了,繼續執行到下面的程式碼。

:00529E96 E85DD1FDFF              call 00506FF8              ====>> 未完成的革命

又在這裡繼續
:00529E9B 8B55DC                  mov edx, dword ptr [ebp-24] ====>> EDX才是我們需

要的註冊碼第二
                                                                    部分(透過機

器碼運算得到)
:00529E9E 8B45E4                  mov eax, dword ptr [ebp-1C] ====>> 我們的機器碼
:00529EA1 E8D2A2EDFF              call 00404178
:00529EA6 750A                    jne 00529EB2 ====>> 機器碼運算結果不正確才要跳,

暴破時改為NOP
:00529EA8 8B45FC                  mov eax, dword ptr [ebp-04]
:00529EAB C6804104000001          mov byte ptr [eax+00000441], 01 ====>> 看到這裡

了嗎,
                                                                        執行到這

裡就成功了。

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00529E91(C), :00529EA6(C)
|
:00529EB2 33C0                    xor eax, eax
:00529EB4 5A                      pop edx
:00529EB5 59                      pop ecx
:00529EB6 59                      pop ecx

四、結果:

在識別碼中任意取一個使用者碼作為註冊碼的第一部份
中間有“-”
註冊碼第二部份在這裡取:“:00529E9B 8B55DC  mov edx, dword ptr [ebp-24]”

使用者名稱:華仔[CCG]
識別碼:855F3B3B3358CFC2A3B-7A5746F65067575673
註冊碼:2B554141495EC5D8A9B-7A2C4712443505E212

使用者名稱:華仔[CCG]

識別碼:3A544040485DC4D7A8B-7A5746F65067575673
註冊碼:855F3B3B3358CFC2A3B-7A2C4712443505E212

識別碼:58524E3E365BC2D5A6B-7A5746F65067575673
註冊碼:3A544040485DC4D7A8B-7A2C4712443505E212

識別碼:2B554141495EC5D8A9B-7A5746F65067575673
註冊碼:3A544040485DC4D7A8B-7A2C4712443505E212

相關文章