瘋狂登錄檔v1.0演算法分析
標 題:瘋狂登錄檔v1.0演算法分析
發信人:poppig
時 間: 2004-1-17 週六, 下午2:14
詳細資訊:
《瘋狂登錄檔v1.0 Build 001》,是一款能夠對登錄檔操作的軟體,更體貼人的地方
是它可以告訴你如何操作,而且還可以生成修改項安裝包,讓你可以更加方便的使
用,而且它還提供了手工的修改,不僅包括Reg檔案還包括INI檔案.當然如果你感
興趣的話可以到以下地址去下載(好像說明中沒有提到主頁哦):
http://www.softreg.com.cn/shareware_view.asp?id=/4D4FF8C0-471D-429C-AB17-116E06DC2C69/
首先我們先脫掉它UPx的殼,然後開始行動吧!說起註冊,這個軟體有幾個後門!
所以要注意啊!(不過這是破解完了的後話了^_^)(脫殼以後程式有2006KB)
Let Begin:
註冊名:dengkeng[DFCG]
註冊碼:1234567890abcdefghijklmno
軟體序列號是:0C342D4FA2A61B2D5C50E838EC
點選"確定",它會告訴你需要重新啟動以便驗證是否正確,這也是許多人不想破
解重起校驗的軟體的原因.開始我用RegShot備份了一下,然後在掃描,果然註冊信
息生成在HKEY_LOCAL_MACHINESoftwareFolieRegReg下,可是這是你輸入滿足要
求才寫入登錄檔,如果不滿足要求則不寫入.剛開始輸入的註冊碼不滿25位,它就根
本不寫入登錄檔.我開始就上了當,然後用Filemon.exe進行跟蹤,發現它在執行的
時候生成了一個FolieReg.ldb檔案,而關閉程式則刪除它.開始還以為是註冊資訊.
浪費了一些時間,後來才發現它不是什麼註冊資訊.(可能是什麼許可權之類的?)
所以只好硬著頭皮跟蹤了:
00551095 . 8A12 MOV DL,BYTE PTR DS:[EDX] ;取註冊碼的第1位
00551097 . 8850 01 MOV BYTE PTR DS:[EAX+1],DL
0055109A . C600 01 MOV BYTE PTR DS:[EAX],1
0055109D . 8D55 B8 LEA EDX,DWORD PTR SS:[EBP-48]
005510A0 . 8D45 B4 LEA EAX,DWORD PTR SS:[EBP-4C]
005510A3 . E8 D81EEBFF CALL FOLIEREG.00402F80
005510A8 . 8D45 B0 LEA EAX,DWORD PTR SS:[EBP-50]
005510AB . 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
005510AE . 8A52 18 MOV DL,BYTE PTR DS:[EDX+18] ;取註冊碼的25位
005510B1 . 8850 01 MOV BYTE PTR DS:[EAX+1],DL
005510B4 . C600 01 MOV BYTE PTR DS:[EAX],1
005510B7 . 8D55 B0 LEA EDX,DWORD PTR SS:[EBP-50]
005510BA . 8D45 B4 LEA EAX,DWORD PTR SS:[EBP-4C]
005510BD . B1 02 MOV CL,2
005510BF . E8 8C1EEBFF CALL FOLIEREG.00402F50 ;兩個字元連線起來
005510C4 . 8D45 B4 LEA EAX,DWORD PTR SS:[EBP-4C]
005510C7 . 50 PUSH EAX
005510C8 . 8D45 B0 LEA EAX,DWORD PTR SS:[EBP-50]
005510CB . 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C] ;密碼錶為"AAF03FF95FB68665"
005510CE . 8A52 06 MOV DL,BYTE PTR DS:[EDX+6] ;取密碼錶中的第7個字元
005510D1 . 8850 01 MOV BYTE PTR DS:[EAX+1],DL
005510D4 . C600 01 MOV BYTE PTR DS:[EAX],1
005510D7 . 8D55 B0 LEA EDX,DWORD PTR SS:[EBP-50]
005510DA . 8D45 AC LEA EAX,DWORD PTR SS:[EBP-54]
005510DD . E8 9E1EEBFF CALL FOLIEREG.00402F80
005510E2 . 8D45 A8 LEA EAX,DWORD PTR SS:[EBP-58]
005510E5 . 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]
005510E8 . 8A52 03 MOV DL,BYTE PTR DS:[EDX+3] ;去密碼錶中的第4個字元
005510EB . 8850 01 MOV BYTE PTR DS:[EAX+1],DL
005510EE . C600 01 MOV BYTE PTR DS:[EAX],1
005510F1 . 8D55 A8 LEA EDX,DWORD PTR SS:[EBP-58]
005510F4 . 8D45 AC LEA EAX,DWORD PTR SS:[EBP-54]
005510F7 . B1 02 MOV CL,2
005510F9 . E8 521EEBFF CALL FOLIEREG.00402F50 ;兩個字元連線起來
005510FE . 8D55 AC LEA EDX,DWORD PTR SS:[EBP-54]
00551101 . 58 POP EAX
00551102 . 33C9 XOR ECX,ECX
00551104 . 8A08 MOV CL,BYTE PTR DS:[EAX]
00551106 . 41 INC ECX
00551107 . E8 201FEBFF CALL FOLIEREG.0040302C ;比較兩個字元是否相等
0055110C . 0F85 8B000000 JNZ FOLIEREG.0055119D ;相等就寫入登錄檔,不等則不寫入
我們成功了嗎?看看登錄檔中,已經寫入了我們所輸入的資訊.下面就是關鍵了,
想必重新啟動以後要RegQueryValueExA登錄檔了!用W32Dasm察看資訊,找到了如下
的資訊:
* Referenced by a CALL at Addresses:
|:00464764 , :00474F8E , :004751EB
|
* Reference To: advapi32.RegQueryValueExA, Ord:0000h
|
:00406E7C FF255C925600 Jmp dword ptr [0056925C]
:00406E82 8BC0 mov eax, eax
有三處呼叫了這個資訊,我們執行程式,顯然是註冊資訊不對,因為程式不會這麼
簡單讓我們25個註冊資訊,只是比較兩個.執行完了以後,在看看登錄檔,裡面的資訊
自己刪除了,這就是我們用RegShot沒有得到資訊的原因了!因為資訊被刪除了,所以
我們得再次輸入資訊:
註冊名:dengkeng[DFCG]
註冊碼:F234567890abcdefghijklmn0
根據上面已經得出的最後兩位資訊是F0,所以我們替換了1,25位.
1.在00474F8E下斷點,狂按F8,到達下面:
00554742 |. 8D4D F0 LEA ECX,DWORD PTR SS:[EBP-10]
00554745 |. BA 504E5500 MOV EDX,FOLIEREG.00554E50 ; ASCII "Serial"
0055474A |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0055474D |. E8 AE08F2FF CALL FOLIEREG.00475000
00554752 |. 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14]
00554755 |. 8BC3 MOV EAX,EBX
00554757 |. E8 88D2FFFF CALL FOLIEREG.005519E4
0055475C |. 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
0055475F |. E8 E801EBFF CALL FOLIEREG.0040494C
.....
.....從密碼錶中進行取數,取足7位
.....
00554C7E |. B1 07 MOV CL,7
00554C80 |. E8 CBE2EAFF CALL FOLIEREG.00402F50
00554C85 |. 8D55 90 LEA EDX,DWORD PTR SS:[EBP-70]
00554C88 |. 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18] ;一共從密碼錶裡取了7位數
00554C8B |. E8 60FCEAFF CALL FOLIEREG.004048F0 ;以便和後面的註冊碼中的比較
00554C90 |. 8D45 BC LEA EAX,DWORD PTR SS:[EBP-44]
00554C93 |. 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10] ;註冊碼的地址
00554C96 |. 8A52 11 MOV DL,BYTE PTR DS:[EDX+11] ;取其中第12位
00554C99 |. 8850 01 MOV BYTE PTR DS:[EAX+1],DL
.....
.....按照要求從註冊碼中取出7位,即後面的"hijklmn"
.....
00554D82 |. B1 07 MOV CL,7
00554D84 |. E8 C7E1EAFF CALL FOLIEREG.00402F50
00554D89 |. 8D55 90 LEA EDX,DWORD PTR SS:[EBP-70]
00554D8C |. 8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20]
00554D8F |. E8 5CFBEAFF CALL FOLIEREG.004048F0
00554D94 |. 8D95 58FFFFFF LEA EDX,DWORD PTR SS:[EBP-A8]
00554D9A |. 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18]
00554D9D |. E8 523EEBFF CALL FOLIEREG.00408BF4 ;把密碼錶中取出的數字轉換成大寫
00554DA2 |. 8B85 58FFFFFF MOV EAX,DWORD PTR SS:[EBP-A8]
00554DA8 |. 8B55 E0 MOV EDX,DWORD PTR SS:[EBP-20]
00554DAB |. E8 E0FCEAFF CALL FOLIEREG.00404A90 ;比較是否相等
00554DB0 |. 75 07 JNZ SHORT FOLIEREG.00554DB9
到這裡我們已經得到了第2部分的註冊碼,替換掉原有的hijklmn.
我們再次輸入註冊資訊:
註冊名:dengkeng[DFCG]
註冊碼:F234567890abcdefg7CAC5C50
在執行軟體看看,看看標題欄(上面寫著已經註冊了),也沒有註冊視窗了!
難道我們已經註冊了??其實不然,這是程式給我們玩的一個花樣!如果你
試著點反鍵,選擇"檢視詳細資訊",它會提示你註冊哦!你在看看標題,又變成
了未註冊的樣子了,我想大家應該聯想到了什麼吧!不錯!應該又重新讀取註冊
表的內容進行判斷,所以我們必須繼續跟蹤登錄檔!
我們還是輸入上面的註冊資訊,用Ollydbg載入.
2.F9執行程式,bp 00474F8E下斷點,在點反鍵選擇"檢視詳細資訊",被攔截了吧.
下面你所要做的是狂按F8:
.....
.....
.....
005524BB |. 8B55 A8 MOV EDX,DWORD PTR SS:[EBP-58]
005524BE |. B9 882A5500 MOV ECX,FOLIEREG.00552A88 ;ASCII "sTOP cRACKINg,Please ^_^"
這是作者給我們的資訊,叫我們不要Cracking,^_^
.....
.....
.....
00552956 |. 8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20]
00552959 |. E8 921FEBFF CALL FOLIEREG.004048F0
0055295E |. 8B45 E4 MOV EAX,DWORD PTR SS:[EBP-1C] ;真正的2~5位,是"C2B3"
00552961 |. 8B55 E0 MOV EDX,DWORD PTR SS:[EBP-20] ;註冊碼的2~5位,是"2345"
00552964 |. E8 2721EBFF CALL FOLIEREG.00404A90
00552969 |. 75 07 JNZ SHORT FOLIEREG.00552972
這樣我們又可以得到註冊碼的2~5位了.我們在修改註冊資訊:
註冊名:dengkeng[DFCG]
註冊碼:FC2B367890abcdefg7CAC5C50
現在我們可以"檢視詳細資訊"了吧!我想接下來的地方應該知道是什麼了吧!
就是剩下的兩個部分:"生成安裝包"和"生成登錄檔檔案"這兩個限制了!方法跟
上面的雷同,我就不在羅嗦了!
下面兩個你就自己跟蹤吧!第3個資訊得到的是"50DE"替換原來的0abc,第4個資訊
得到的是將"C5AC"替換掉"defg".
下面總結一下分析過程,首先判斷是否是註冊碼是否25個,不是則退出並不寫進登錄檔.
若是25個則透過取密碼錶,取出密碼錶的7,4位和註冊碼的1,25位比較如果相等則寫進注
冊表等待下次重起驗證,否則不寫進登錄檔.透過載入的時候讀取登錄檔的資訊參加運算
然後在從密碼錶中取出7個字元和註冊資訊的18~24位進行比較.如果成功則會提示你是所
謂"註冊"的註冊版本,否則刪除登錄檔的註冊資訊.下面是有3個功能受到限制,你執行這3
個功能則又恢復成沒有註冊的版本了!你可以透過下斷點,跟蹤得到註冊碼2~5位的資訊,
同理你也可以得到10~13位和14~17位的資訊,顯然6~9位資訊沒有使用!
跟蹤完了以後似乎和當時跟蹤豪傑一樣的感受,只要你有足夠的耐心,就一定可以跟蹤
出正確的註冊碼,如果哪位高手有時間寫個序號產生器出來,記得Email一個給我啊!!
所以完整的註冊資訊是:
註冊名:dengkeng[DFCG]
註冊碼:FC2B3678950DEC5AC7CAC5C50
軟體序列號是:0C342D4FA2A61B2D5C50E838EC
Made By dengkeng[DFCG]
E-mail:shellc0de@sohu.com
歡迎轉載,請保持文章的完整性
相關文章
- 瘋狂android講義目錄2014-03-24Android
- 騰訊“瘋狂”開源!2020-01-22
- 網易瘋狂佇列2017-08-17佇列
- 瘋狂學習——DP!2024-04-12
- 京東正在瘋狂招人。。。2024-09-11
- oracle資料庫瘋狂生成dump把目錄撐滿2022-10-08Oracle資料庫
- 登錄檔2024-06-20
- 瘋狂的遊戲代言人!2020-03-11遊戲
- 瘋狂的程式設計世界2013-01-16程式設計
- 瘋狂的程式設計師2012-07-08程式設計師
- 瘋狂單詞破解實錄(初學者請進!) (9千字)2000-08-24
- 瘋狂的 Vue3 之 Setup2021-04-22Vue
- 瘋狂的比特幣–資訊圖2013-11-18比特幣
- 數字馬力正在瘋狂招人。。2024-10-28
- 瘋狂刪除tomcat日誌2024-07-18Tomcat
- 瘋狂Java講義第3版PDF2019-03-12Java
- 網際網路人,瘋狂做副業YPT2022-03-10
- 如何遏制 PostgreSQL WAL 的瘋狂增長2017-11-07SQL
- 為什麼JavaScript開發如此瘋狂2016-04-17JavaScript
- 書摘:瘋狂的程式設計師2013-08-04程式設計師
- 瘋狂語文朗讀教學法2008-06-19
- JQuery登錄檔單2020-10-28jQuery
- VC操作登錄檔2014-08-18
- AI正在瘋狂尋找Know-How2019-01-30AI
- 瘋狂java07--物件導向的陷阱2018-08-07Java物件
- 讓ATM瘋狂吐錢的黑客死了2017-10-10黑客
- 面向切面程式設計之瘋狂的 Aspects2016-04-07程式設計
- 瘋狂的Web應用開源專案2011-08-11Web
- [瘋狂Java]陣列:Arrays(陣列工具類)2016-05-17Java陣列
- Android瘋狂的專利戰爭史記2011-09-27Android
- 你真的會玩SQL嗎?Case也瘋狂2015-11-22SQL
- 查詢瘋狂增長的arch-續2008-03-04
- 程式設計師,修女也瘋狂嗎 (轉)2007-12-12程式設計師
- 樹形查詢也瘋狂&優化措施2009-06-19優化
- 利用登錄檔隱藏檔案2015-08-08
- windowXP登錄檔學習2010-04-19
- 獲取登錄檔字型2024-06-29
- win登錄檔相關2024-08-20