史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > Hacker/Cracker 及加解密技術文件
忘記密碼?
註冊帳號 論壇說明 標記討論區已讀

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2003-12-12, 02:49 AM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 :******套用技術大全 1.5 版註冊分析

程序名:******套用技術大全 1.5 版
破解難度:易
破解工具:winhex 漢化版
破解程序:
1.進入程序後,會提示是否註冊,這時,進入註冊視窗。
2.在姓名中輸入用戶名(如:小魚兒),在註冊碼中輸入78787878(先用這個吧),按下註冊按鈕,程序提示「錯誤的註冊碼」。
3.不要關閉提示框,開啟winhex,選項「工具」表單下的「RAM編輯器」,在出現的編輯虛擬記憶體對話視窗中,找到「why100000"項目(即目標程

序),選項主要記憶體後,連續按確定2次。
4.然後選項「搜尋」表單下的「文字尋找」表單,輸入「78787878」(即剛才錯誤的註冊碼),對話視窗中的其它選項不要選。然後按確定進

行尋找。
5.會在某處發現很近的區域內連續出現4個「78787878」,中間會有2個字串,第1個即為註冊碼。我找到的是「112211871367」
6.將112211871367填入註冊對話視窗中,註冊成功!
[註:]
1.軟體的註冊碼用用戶名產生.
2.軟體註冊成功後,在註冊表中寫入一個標誌:如下
[HKEY_LOCAL_MACHINE\SOFTWARE\Net_e_Studio\Why100000\Version1.5]
中建立一個"IsRegistry"="Yes"的鍵。
在軟體啟動時,只要IsRegistry的值為"yes" ,它就認為是已註冊的。


------------------------------------------------------------------------------
註冊碼的產生程序分析:

主程序使用ASPack 2.11壓縮,首先對其解壓縮.

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0047438A(C)
|<-----從這裡開始進入第一次變化,將用戶名字串前6字元和另一個字串的6字元依次進行混合.形成一個12字元長的字串
如:輸入用戶名:"hoto"
內碼:68 6F 74 6F 00
另一字串:"十萬個"
內碼:CA AE CD F2 B8 F6

處理完後的字串:68 CA 6F AE 74 CD 6F F2 20 B8 20 F6

:0047435C 8D45FC lea eax, dword ptr [ebp-04]
:0047435F E82CFDF8FF call 00404090
:00474364 8BF3 mov esi, ebx
:00474366 03F6 add esi, esi
:00474368 8B55F8 mov edx, dword ptr [ebp-08] <---- EDX 中為輸入的用戶名
:0047436B 8A541AFF mov dl, byte ptr [edx+ebx-01] <----取出一個字元
:0047436F 885430FE mov byte ptr [eax+esi-02], dl <----放入目標字串中
:00474373 8D45FC lea eax, dword ptr [ebp-04]
:00474376 E815FDF8FF call 00404090
:0047437B 8B55F4 mov edx, dword ptr [ebp-0C]<----指向字串"十萬個"
:0047437E 8A541AFF mov dl, byte ptr [edx+ebx-01] <----取出一個字元
:00474382 885430FF mov byte ptr [eax+esi-01], dl <----放入目標字串
:00474386 43 inc ebx
:00474387 83FB07 cmp ebx, 00000007
:0047438A 75D0 jne 0047435C <---第一次變化是否完畢.
:0047438C 8BC7 mov eax, edi
:0047438E 8B55FC mov edx, dword ptr [ebp-04]
:00474391 E8FEF8F8FF call 00403C94
:00474396 8B45FC mov eax, dword ptr [ebp-04]
:00474399 E822FBF8FF call 00403EC0
:0047439E 8BF0 mov esi, eax
:004743A0 85F6 test esi, esi
:004743A2 7E30 jle 004743D4
:004743A4 BB01000000 mov ebx, 00000001

* Referenced by a (U)nconditional or (C)onditional Jump at Address:<----第二次變化,產生註冊碼.
|:004743D2(C)
|
:004743A9 8B45FC mov eax, dword ptr [ebp-04] <----EAX指向第一次變化後的字串
:004743AC 8A4418FF mov al, byte ptr [eax+ebx-01]<----取出一個字元
:004743B0 34BB xor al, BB <----進行異或
:004743B2 25FF000000 and eax, 000000FF
:004743B7 8D55E4 lea edx, dword ptr [ebp-1C]
:004743BA E86D4CF9FF call 0040902C<----將取出的字元轉化為字串串
:004743BF 8B45E4 mov eax, dword ptr [ebp-1C]
:004743C2 FF30 push dword ptr [eax]
:004743C4 8BC7 mov eax, edi
:004743C6 E8C5FCF8FF call 00404090
:004743CB 5A pop edx
:004743CC 885418FF mov byte ptr [eax+ebx-01], dl<----將轉化的字串串的第一字元放入註冊碼位址中.
:004743D0 43 inc ebx
:004743D1 4E dec esi
:004743D2 75D5 jne 004743A9 <----是否轉化完成,完成後,EAX指向產生的註冊碼.


---------------------------以下為註冊碼判斷程序------------

* Possible StringData Ref from Code Obj ->"十萬個為什麼"
|
:0047EB43 BAA8ED4700 mov edx, 0047EDA8
:0047EB48 E83F57FFFF call 0047428C
:0047EB4D 8B45DC mov eax, dword ptr [ebp-24]
:0047EB50 B90C000000 mov ecx, 0000000C
:0047EB55 BA01000000 mov edx, 00000001
:0047EB5A E86955F8FF call 004040C8
:0047EB5F 8B55E0 mov edx, dword ptr [ebp-20]
:0047EB62 58 pop eax
:0047EB63 E86854F8FF call 00403FD0 <----判斷程序.EAX和EDX分別指向真正註冊碼與輸入的註冊碼.進入此CALL還可以知道

它只判斷前12位註冊碼,所以註冊碼12位就可以了.
:0047EB68 742F je 0047EB99 <----不跳就是註冊失敗
:0047EB6A 8D55CC lea edx, dword ptr [ebp-34]
:0047EB6D 8B45FC mov eax, dword ptr [ebp-04]
:0047EB70 8B80EC020000 mov eax, dword ptr [eax+000002EC]
:0047EB76 E835CEFAFF call 0042B9B0
:0047EB7B 8B45CC mov eax, dword ptr [ebp-34]
:0047EB7E 8D55D0 lea edx, dword ptr [ebp-30]
:0047EB81 E826A3F8FF call 00408EAC
:0047EB86 8B45D0 mov eax, dword ptr [ebp-30]

* Possible StringData Ref from Code Obj ->"000000000000000"
|
:0047EB89 BAC0ED4700 mov edx, 0047EDC0
:0047EB8E E83D54F8FF call 00403FD0
:0047EB93 0F855C010000 jne 0047ECF5

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0047EB68(C)
|
:0047EB99 B201 mov dl, 01
:0047EB9B A118374500 mov eax, dword ptr [00453718]
:0047EBA0 E8734CFDFF call 00453818
:0047EBA5 8945F8 mov dword ptr [ebp-08], eax
:0047EBA8 33C0 xor eax, eax
:0047EBAA 55 push ebp

* Possible StringData Ref from Code Obj ->"鑞瑜媼媼
|
:0047EBAB 6889EC4700 push 0047EC89
:0047EBB0 64FF30 push dword ptr fs:[eax]
:0047EBB3 648920 mov dword ptr fs:[eax], esp
:0047EBB6 BA02000080 mov edx, 80000002
:0047EBBB 8B45F8 mov eax, dword ptr [ebp-08]
:0047EBBE E8F54CFDFF call 004538B8
:0047EBC3 33C0 xor eax, eax
:0047EBC5 55 push ebp

* Possible StringData Ref from Code Obj ->"崩镚G割"
|
:0047EBC6 683EEC4700 push 0047EC3E
:0047EBCB 64FF30 push dword ptr fs:[eax]
:0047EBCE 648920 mov dword ptr fs:[eax], esp
:0047EBD1 B101 mov cl, 01

* Possible StringData Ref from Code Obj ->"\Software\Net_e_Studio\Why100000\Version1.5" <----寫入註冊表
|
:0047EBD3 BAD8ED4700 mov edx, 0047EDD8
:0047EBD8 8B45F8 mov eax, dword ptr [ebp-08]
:0047EBDB E8404DFDFF call 00453920

* Possible StringData Ref from Code Obj ->"Yss
"
|
:0047EBE0 B90CEE4700 mov ecx, 0047EE0C

* Possible StringData Ref from Code Obj ->"IsRegistry" <----寫入註冊標誌,再一次啟動程序時,它只檢查這個標誌是否這"YES"
|
:0047EBE5 BA18EE4700 mov edx, 0047EE18
:0047EBEA 8B45F8 mov eax, dword ptr [ebp-08]
:0047EBED E8AA50FDFF call 00453C9C
:0047EBF2 8D55C8 lea edx, dword ptr [ebp-38]
:0047EBF5 8B45FC mov eax, dword ptr [ebp-04]
:0047EBF8 8B80E0020000 mov eax, dword ptr [eax+000002E0]
:0047EBFE E8ADCDFAFF call 0042B9B0
:0047EC03 8B4DC8 mov ecx, dword ptr [ebp-38]

* Possible StringData Ref from Code Obj ->"RegistryUser"<----寫入註冊用戶名
|
:0047EC06 BA2CEE4700 mov edx, 0047EE2C
:0047EC0B 8B45F8 mov eax, dword ptr [ebp-08]
:0047EC0E E88950FDFF call 00453C9C
:0047EC13 8D55C4 lea edx, dword ptr [ebp-3C]
:0047EC16 8B45FC mov eax, dword ptr [ebp-04]
:0047EC19 8B80EC020000 mov eax, dword ptr [eax+000002EC]
:0047EC1F E88CCDFAFF call 0042B9B0
:0047EC24 8B4DC4 mov ecx, dword ptr [ebp-3C]

* Possible StringData Ref from Code Obj ->"RegistryCode" <----寫入註冊碼
|
:0047EC27 BA44EE4700 mov edx, 0047EE44
:0047EC2C 8B45F8 mov eax, dword ptr [ebp-08]
:0047EC2F E86850FDFF call 00453C9C
:0047EC34 33C0 xor eax, eax
:0047EC36 5A pop edx
:0047EC37 59 pop ecx
:0047EC38 59 pop ecx
:0047EC39 648910 mov dword ptr fs:[eax], edx
:0047EC3C EB2D jmp 0047EC6B
:0047EC3E E9E147F8FF jmp 00403424
:0047EC43 BA84ED4700 mov edx, 0047ED84

* Possible StringData Ref from Code Obj ->" Registry Error! " <----到這裡就是註冊失敗了.
|
:0047EC48 B854EE4700 mov eax, 0047EE54
:0047EC4D B910000000 mov ecx, 00000010
:0047EC52 E86D55FFFF call 004741C4
:0047EC57 E8244BF8FF call 00403780
:0047EC5C E84F4BF8FF call 004037B0
:0047EC61 E9A3000000 jmp 0047ED09
:0047EC66 E8154BF8FF call 00403780


--------完-----------------
分析:註冊用戶名長度只有前6字元是有效的,與註冊碼的產生有關.
註冊碼有效長度為12位.

--------------------------------------------------------------------------------
psac 目前離線  
送花文章: 3, 收花文章: 1630 篇, 收花: 3204 次
 


主題工具
顯示模式

發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 09:57 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2020, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1