![破解Windows9X屏幕保護(hù)程序的口令_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/26d616a7-c16d-4587-a32c-159a6a9e53ad/26d616a7-c16d-4587-a32c-159a6a9e53ad1.gif)
![破解Windows9X屏幕保護(hù)程序的口令_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/26d616a7-c16d-4587-a32c-159a6a9e53ad/26d616a7-c16d-4587-a32c-159a6a9e53ad2.gif)
![破解Windows9X屏幕保護(hù)程序的口令_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/26d616a7-c16d-4587-a32c-159a6a9e53ad/26d616a7-c16d-4587-a32c-159a6a9e53ad3.gif)
![破解Windows9X屏幕保護(hù)程序的口令_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/26d616a7-c16d-4587-a32c-159a6a9e53ad/26d616a7-c16d-4587-a32c-159a6a9e53ad4.gif)
![破解Windows9X屏幕保護(hù)程序的口令_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/26d616a7-c16d-4587-a32c-159a6a9e53ad/26d616a7-c16d-4587-a32c-159a6a9e53ad5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、破解windows 9x屏幕保護(hù)程序的口令 作者:劉起凌筆者在破解windows 9x屏幕保護(hù)程序口令的過程屮,用的是一個超強(qiáng)的軟件調(diào)試工具:numoga 公司的soft-ice 3.01 for windows 95,鑒于soft-tce使用上的復(fù)雜性以及整個破解工作的枯燥 和繁瑣,筆者略去了對跟蹤破解過程的敘述。對于windows 9x屏幕保護(hù)程序的口令,有三點(diǎn)是需要首先明白的:(1)口令的有效字符為從0x20到oxff的可打印字符共計224個;(2)允許的口令最大長度為128個字節(jié);(3)對于26個英文字母,大小寫等效。值得注意的是對于windows 9x中文版來說,由于在屏幕保護(hù)程序啟
2、動后屏蔽了中文輸入法的 激活熱鍵,所以,盡管你可以將windows 9x屏幕保護(hù)程序的口令設(shè)置為漢字,但通常很少有人這 樣做。因為那樣的話你將只能通過事先將口令復(fù)制到剪貼版(選屮字串再按ctrl+c或ctrl+x),然 后再從剪貼版粘貼(ctrl+v)的辦法才能實現(xiàn)漢字口令的輸入。這顯然是比較麻煩的。對于上述的第二點(diǎn),我們可以通過先復(fù)制一段長于128個字節(jié)的字串到剪貼版,再在口令輸入 欄將字串粘貼的辦法來驗證。你會發(fā)現(xiàn)windows 9x將我們字串中長于128字符后的部分截掉并 忽略了?,F(xiàn)在,我們首先要確定的一個問題就是:windows 9x將我們輸入的口令存放在什么地方?我們知道,windo
3、ws 9x的用戶口令保存在一個由"用戶名+ .pwl"的文件中;在windows 3. 1和 windows nt 4. 0中,屏幕保護(hù)程序的口令是存放在文件control, ini 'i1的。而事實上windows 9x 對屏幕保護(hù)程序口令的保存并不在上述文件中。windows 9x將我們輸入的屏幕保護(hù)程序口令經(jīng)過加 密變換后保存到了它的系統(tǒng)注冊表屮!具體的存放路徑如下:hkey current usercontrol paneldesktopscreensave data我們可以運(yùn)行regedit來查看,會發(fā)現(xiàn)screcnsave_data注冊項有如下特征:1
4、)以0x00空結(jié)束符收尾2 )長度為我們所輸入的口令長度的兩倍加一(0x00空結(jié)束符)3)除了 0x00空結(jié)束符外,所有數(shù)值都在字符0'至9'和人到丫間變化(即0x300x39, 0x4廣0x46)4 )最大長度為257 (含0x00空結(jié)束符)上述第一點(diǎn),如果以一個c程序員的觀點(diǎn)來看,說明screensave data注冊項保存的實際上 是一個字符串。而第二點(diǎn)和第三點(diǎn),正是我們需要處理的部分。事實上,將這些字符兩兩一組合并 再轉(zhuǎn)換成相應(yīng)的ascii數(shù)值就得到了經(jīng)過windows 9x加密(如果我們認(rèn)為這也算加密的話)的數(shù) 據(jù)。具體的轉(zhuǎn)換規(guī)則是:0x30 )> 0x000x
5、31 ) > 0x01, , , 符符符- 字字字-9ab字符' 例如:fasc0x39 )> 0x090x41 )> 0x0aiscia0x46 )> 0x0f0x42 )> 0x0b加密字符串:"09fcd68c23"對應(yīng)ascii值:0x30 0x39 0x46 0x43 0x44 0x36 0x38 0x43 0x32 0x33 0x00 轉(zhuǎn)換得的值:0x09 oxfc 0xd6 0x8c 0x23經(jīng)過以上論述,再看第四點(diǎn),也可以證明windows 9x所承認(rèn)的屏幕保護(hù)程序的口令的最大長 度是128個字符。具體編程而言,我們可以
6、用以下mfc代碼調(diào)win32 sdk中的api函數(shù)從系統(tǒng)注冊表屮讀出 screensave data注冊項的值:hkeyhkey;charstrvalue256+1;dword dwtype, dwsi ze=si zoof(strvalue);/打開注冊表的指定鍵(注冊項)if(regopenkeyex(hkey_current_user, "control paneldesktop",0, key_all_access, &hkey)!二error_success) messagebox (,z無法打開系統(tǒng)注冊表!,錯誤);return;/取注冊項(鍵)的值if
7、 (regqueryvalueex (hkey, "screensave_ data", kull,fedwtype, (lpbyte)strvalue, fedwsize)!=error_success)messagebox ("無法取得系統(tǒng)注冊表中的鍵值!,錯誤);return;/關(guān)閉打開的指定鍵(注冊項)regclosekey(hkey);而將windows 9x用字符串形式所保存的所謂加密值轉(zhuǎn)換為我們所需要的ascii數(shù)值,對于一 個熟練的c程序員來說是極為簡單的,下面給出mfc示范代碼:cstringlockdata;lockdata. getbuffe
8、rsetlength(dwsize/2);/說明:以上兩句若以純粹的c代碼來寫只需一句:/unsigned char lockdatat128 = 0;for(int i二0;i< (int)dwsizo/2;i+)if (strvalue2*i>=, 0* && strvalue2*i<=,)strvalue2*i=strvalue2*io'else if (strvalue2*i >=,&& strvalue2*i<=,fj)strvalue2*i=strvalue2*ia* +10;if (strvalue2*i+l&
9、gt;二'o' && strvalue2*i+l<=, 9*)strvalue2*i+叮二strvalue2*i+l-' o'else if (strvalue2*i+l>=, a* && strvalue2*i+l<=, f*)strvalue2*i+l=strvalue2*i+l->a' +10;lockdata. setat(i, (tchar)(strvalue2*i*16+strvalue2*i+l);/說明:上一條語句以c代碼來說可寫為:/lockdatai=strvalue2*i*16
10、+strvalue2*i+l;現(xiàn)在的問題是:windows 9x對我們的口令做了哪些變換后得到的上述轉(zhuǎn)換值?事實上,windows 9x只是用了一個簡單的數(shù)組對我們的口令中的每一字符進(jìn)行了逐字節(jié)異或運(yùn) 算而已。這一點(diǎn)可以這樣來驗證:我們先設(shè)定口令為abcd,這時系統(tǒng)注冊表中的screensave.data 注冊項的值假定是"0 9 ac 3 5 5 9 (對應(yīng)的ascii值分別為:0x30, 0x39, 0x41, 0x43, 0x33,0x35, 0x35, 0x39, 0x00 ;對應(yīng)的轉(zhuǎn)換值為:0x09, oxac, 0x35, 0x59 );再將口令更改為"alcd
11、", 查看系統(tǒng)注冊表的注冊項,我們會發(fā)現(xiàn)值變成了"0 9 a 2 3 5 5 9 ,這表明字符串中a' , ' c', 'd'的轉(zhuǎn)換值都沒改變,進(jìn)一步來說,就是整個口令字符串中的每一個字節(jié)都是在與一個相應(yīng)的固 定值在運(yùn)算。而之所以在這里說windows 9x対字節(jié)的運(yùn)算是異或運(yùn)算,這一點(diǎn)正是筆者在破解過 程中的最重要的心得,也是破解windows 9x屏幕保護(hù)程序的口令的關(guān)鍵所在。至于這個用以對字節(jié)異或運(yùn)算的數(shù)組(也就是所謂的密鑰)的獲得,至少可以有兩個辦法。第一種辦法是基于上述研究心得的最直接的辦法,這里給出簡單描述,有興趣的朋友可
12、以自行 編程來加以驗證:先輸入一個128字節(jié)長的口令并確定,再讀出系統(tǒng)注冊表中screensave_data鍵 的值并轉(zhuǎn)換后,和我們剛才輸入的口令字符串逐字節(jié)異或,就得到了這個windows 9x的所謂密鑰。第二種辦法是基于另一個研究心得上的。在對windows 9x本身加解密口令字串執(zhí)行機(jī)制的跟 蹤分析過程中,筆者發(fā)現(xiàn)windows 9x本身在生成密鑰時(尤其是在屏幕保護(hù)程序激活后對用戶的 輸入做比較檢驗時)使用的主要是一個花里胡哨的隨機(jī)交換算法,下面是經(jīng)筆者簡化后效果完全相 同的生成算法:設(shè)定一個四字節(jié)長的增效器數(shù)組,值分別為0xb2, oxdc, 0x90, 0x8f ;設(shè)定一個256字
13、節(jié)長的運(yùn)算數(shù)組和一個128字節(jié)長的密鑰數(shù)組;設(shè)定上一次運(yùn)算的增效值并賦初值0;首先將運(yùn)算數(shù)組中各元素的下標(biāo)值賦各元素(256次循環(huán));從運(yùn)算數(shù)組的首元素開始循環(huán):計算出要運(yùn)算數(shù)組中要交換元素值的元素下標(biāo)(也就是有規(guī)律 的所謂隨機(jī)值)并與當(dāng)前元素交換;記下本次運(yùn)算中用到的增效值以供下次循環(huán)時使用(256次循 環(huán));再一個128次循環(huán),只是要交換的元素的開始下標(biāo)是從第二個元素開始的,交換法則也稍有不 同,同時從運(yùn)算數(shù)組中按一定法則取值賦密鑰數(shù)組。至此密鑰數(shù)組生成完成。下面給出相應(yīng)的c代碼:unsigned charmultiplier = 0xb2, oxdc, 0x90, 0x8f ;unsig
14、ned charmatrix256, kcydata128;inti;unsigned char temp, exchange,last=0;for(i=0;i<256;i+) matrixi=i;for(i=0;i<256;i+)temp二matrixi;exchange二(temp+last+mu11iplieri%4)&0xff;matrixi=matrixexchange;matrix rexchangc=tcmp;last=exchange;exchange=0;for(i=0;i<128;i+) temp二matrixi+1;exchange(exchan
15、ge+temp)&oxff;matrix i+l=matrixexchange;matrixexchange=temp;keydatai=matrix(matrixi+l+temp)&0xff:有了上面談到的這些某礎(chǔ)后,windows 9x屏幕保護(hù)程序口令的破解就極為容易了。例如可用 mfc代碼書寫如下:cstring strpassword;strpassword. getbuffersctlength(dwsize/2);/ c 代碼可簡寫為:unsigned char strpassword 128+1 = 0;for (i=0;i< (int)dwsize/2;i
16、+)strpassword. setat(i, (tchar)lockdata. getat(i) " (tchar)keydata. getat (i); / c 代碼可寫為:strpasswordi=lockdatai - keydatai;5j后,筆者給出在mjcro$()ft visual c+ 5. 0開發(fā)環(huán)境中使用mfc appwizard生成一個的 完整的慕于對話框的破解程序的整個步驟和代碼:啟動visual c卄5.0,按以下步驟創(chuàng)建一個工程:1 )選擇file | new.菜單項,彈出new對話框,選擇projects標(biāo)簽,選中mfc appwizard (oxo)
17、項,在location編輯框中輸入或選擇要建立的工程所在的目錄,在project name編輯框中輸入要我們建立的工程名稱,例如:crackscro按0k按鈕,繼續(xù)。2 )彈出mfc appwizard - step 1向?qū)υ捒?,由于我們首先提到要編寫的是一個基于對話 框的程序,所以在要創(chuàng)建的工程類型中我們選擇"dialog based"。按next按鈕,進(jìn)入下一步。3 )彈出 mfc appwizard - step 2 of 4 對話框,在"please enter a title for your dialog:" 下輸入:windows 9x屏
18、幕保護(hù)程序口令破解器,按next按鈕。4 )彈;11 mfc appwizard - step 3 of 4對話框,不改變默認(rèn)選擇,按next按鈕。5 )彈出mfc appwizard - step 4 of 4對話框,不改變默認(rèn)選擇,按finish按鈕。6 )彈出new project information對話框,單擊0k按鈕,visual c+ 5. 0將很快為我們 創(chuàng)建好應(yīng)用程序的框架。7 )使workspace可見并選中其中的re sourceview標(biāo)簽,雙擊crackscr resources展開各 類資源,雙擊dialog資源類并選中其中標(biāo)識符為tdd_crackscr_dta
19、log的對話框,將對話框中" 確定"按鈕控件的1d由默認(rèn)的1d0k改為1dcjjnl0ck, caption由原來的"確定改為開始破解; 添加一個按鈕控件,td設(shè)為idc_about, caption設(shè)為關(guān)于"。8)使對話框中static text控件增加到三個,captio n分別設(shè)定為加密字串,密碼長度 和解密密碼;9 )添加三個edit box控件,選中styles中的read-only屬性,標(biāo)識符(id)分別設(shè)定為: idc_lockstring, idc_length 和 idc_passwordo1 0 )添加一個group box控件,使c
20、aption中的內(nèi)容為空。東新安排各控件的大小和位置, 使得最后的屏幕效果大致如下圖所示:1 1 )在 mfc classwizard 對話框的 message maps 標(biāo)簽中為 ccrackscrdlg 類中的 idc_about和idc_unlock添加一個響應(yīng)鼠標(biāo)單擊(bn_cl1cked )的消息處理函數(shù),函數(shù)名采用 默認(rèn)生成的onabout和onunlock不變。在member variables標(biāo)簽中分別為三個edit box控件 增加一個相關(guān)聯(lián)的成員變量,命名為m_lockstring , m_length和m_password,類型為cstring 類。13)在工作區(qū)中點(diǎn)擊c
21、lassview標(biāo)簽,展開crackscr classes ,在ccrackscrdlg項上單 擊鼠標(biāo)右鍵并選擇彈出菜單中的add member variable ,在彈出的對話框中的變量類型(variable type)編輯框中輸入:unsigned char,在variable name (變量名)編輯框中輸入:keydata128, 按0k按鈕。1 4 )在ccrackscrdlg類的onlnitdialog函數(shù)中添加代碼如下:(黑體字部分表示是我們手工添加的代碼)bool ccrackscrdlg:onlnitdialog()/ todo: add extra initializati
22、on here inti;unsigned chartemp, exchange, last = 0;unsigned char multiplier 4 = 0xb2, oxdc, 0x90, 0x8f ; unsigned charmatrix 256 ;for( i = 0; i < 256; i+ ) matrix i = i;for( i 二 0; i < 256; i+ ) temp = matrix i ;exchange = ( temp + last + multiplier i%4 ) & oxff; matrix i = matrix exchange
23、 ;matri xexchango=tomp;last二exchange;exchange = 0;for( i = 0; i < 128; i卄)temp = matrix i + 1 ;exchangc = ( exchange + temp ) & oxff;matrix i + 1 二 matrix exchange ;matrix exchange = temp;kevdatat i = matrix ( matrix i + 1 + temp ) & oxff ; return true;1代碼)1代碼)5 )在ccrackscrdlg類的onabout函數(shù)中
24、添加代碼如下:(黑體字部分表示是手工添加的void ccrackscrdlg:onabout()/ todo: add your control notification handler code here caboutdlg aboutdlg;aboutdlg. domodal ();6 )在ccrackscrdlg類的onunlock函數(shù)中添加代碼如下:(黑體字部分表示是手工添加的代碼)void ccrackscrdlg:onunlocko/ todo: add your control notification handler code hereintunsignedchartempch
25、ar;if( rogoponkoyex( hkey_current_user, "control paneldesktop",0, key all access, &hkey ) !二 error_success ) messagebox c無法打開系統(tǒng)注冊表!","錯誤");return;if( rcgqueryvalueex( hkey, "screensave data", null , &dwtype ,(lpbyte)strvalue, &dwsize ) != error_success )messagebox(z,無法取得系統(tǒng)注冊表中的鍵值!,錯誤);return;regclosekey (hkey);m_lockstring 二 strvalue
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年汽車行業(yè)零部件采購供應(yīng)合同
- 2025年鋰亞電池項目申請報告模稿
- 2025年個人借條合同樣本
- 2025年設(shè)備租賃與物流協(xié)調(diào)合同范本
- 2025年個人消費(fèi)貸款合同簡化版
- 2025年醫(yī)療物聯(lián)網(wǎng)平臺運(yùn)營策劃協(xié)議
- 2025年臨時停車樓建設(shè)施工合同
- 2025年云計算服務(wù)協(xié)議樣本(電子版)
- 2025年全球企業(yè)家保密協(xié)議指南
- 2025年供貨與采購合作合同
- 貴州省貴陽市2023-2024學(xué)年五年級上學(xué)期語文期末試卷(含答案)
- 規(guī)劃課題申報范例:俄羅斯教育改革研究(附可修改技術(shù)路線圖)
- 運(yùn)輸企業(yè)安全事故報告調(diào)查處理制度(簡單版5篇)
- SAP導(dǎo)出科目余額表和憑證表操作說明及截圖可編輯范本
- 倉庫貨物安全管理
- 服務(wù)質(zhì)量、保證措施
- 端午做香囊課件
- 2024年部編版九年級語文上冊電子課本(高清版)
- 墨香里的年味兒(2023年遼寧沈陽中考語文試卷記敘文閱讀題及答案)
- 外研版小學(xué)五年級上冊英語閱讀理解專項習(xí)題
- 2024-2030年市政工程行業(yè)發(fā)展分析及投資戰(zhàn)略研究報告
評論
0/150
提交評論