jackkcg
站務副站長
發表:891 回覆:1050 積分:848 註冊:2002-03-23
發送簡訊給我
|
此為轉貼資料
http://sinbad.zhoubin.com/read.html?board=Win&num=81
標題:微機加密心得(1)
發信人: Sinbad
標 題: 微機加密心得(1)
發信站: 辛巴達 (Fri Sep 27 10:06:58 2002) 發信人: Sinbad
標 題: 微機加密心得(1)
發信站: 辛巴達 (Thu Sep 28 15:12:00 2000) 微機加密心得 by Sinbad
Apr 26, 1999
http://sinbad.dhs.org 如何防止他人進入自己的電腦?怎樣保護宿舍裏公用機器上自己的文件?
這些問題同學們都比較關心,BBS上也經常有相關的討論。現在我把自己的一點心
得體會post出來,與大家共用,就當抛磚引玉吧。 一.拒人於千里之外
防止別人進入系統最簡單的方法就是修改CMOS,設置上開機密碼,但通用密碼的存
在使這項功能形同虛設,所以說不太保險。 比較方便的就是借助軟體System Commander(以下簡稱SC)來設置密碼,SC的強項
是能使多個作業系統共存於硬碟,而且互相之間協調的很好。它之所以能做到這一
點,是因爲安裝SC時,硬碟的MBR(Master Boot Record,主引導磁區)及其他0磁
道的磁區被作了修改,填充了大量SC引導各作業系統的代碼,也就是說,你的機器
已經交給SC了,在這裏設置密碼比較好,適合於你的個人電腦。如果是宿舍裏的公
用電腦,用SC管理著Win98和Linux,沒有設密碼。爲了避免沒有root許可權的人按錯
鍵進入Linux,而導致無法正常關機,通常的做法是另開一個SC帳號,爲其定制
“O/S Access Menu”,但這樣又增加了每次都要根據帳號輸入密碼的麻煩。如何
進入Win98不需要密碼,而進入Linux要密碼呢?其實很簡單,只要新建一個帳號
AutoLogin,把Linux從其“O/S Access Menu”中去掉,這樣其他人不需密碼即可
使用Win98,而Linux只有Administrator才能進入。 SC是一個很好的工具軟體,但卻屬於“請神容易送神難”的那種。要把它乾乾淨淨
的卸掉,需要對硬碟有一定的瞭解。前面已經提到,SC修改了硬碟0面0磁軌包括
MBR的前6個磁區。第二磁區是引導各主分區的程式,如果把C盤根目錄下的
Syscmndr.sys文件改名,這段程式將被執行,出現一個分區啓動功能表,我覺得這比
OS2的Boot Manager簡潔多了。第3磁區是個備份,第4、5、6磁區填充了大量的P,
不知作什麽用的。這後5個磁區用Debug的f命令全部填0即可,至於MBR就在DOS下打
入“FDISK/MBR”,MBR的代碼部分就恢復了。 把SC從0磁軌趕走以後,就可以操起Debug,自己編寫加密代碼了。這時你必須
清楚DOS的啓動過程,並能夠讀懂硬碟MBR中代碼部分和分區表各位元組項的含義。我
在這裏簡要介紹一下,詳細內容請參考有關病毒和加解密的書籍。機器啓動時,硬
件檢測成功後,通過INT 19H將硬碟的MBR讀到記憶體指定區域0:7C00H中,然後轉到
其中執行,根據分區表的資訊確定啓動哪個分區內的作業系統。MBR中有206個位元組
爲空,插入相應的代碼之後就可以在啓動作業系統之前實現加密。下面一小段程式
可以觀察MBR的內容:
C:\>debug
-a
1369:0100 mov ax,201
1369:0103 mov cx,1
1369:0106 mov dx,80
1369:0109 mov bx,200
1369:010C int 13
1369:010E int 20
1369:0110
-g
Program terminated normally
-d200 MBR一共512位元組,用d命令4次看完,你會發現中間有一大段爲00的部分,這將
是我們加密程式的所在之處。用u命令反彙編,可以看到兩個jmp指令,找一個修改
爲jmp到加密程式段開始處,然後在程式段末尾再jmp回來就天衣無縫了。在磁區內
寫代碼,要注意的是當時位址與執行時位址之間的換算關係,搞不清楚就死機了。
下面將介紹如何把一段加密代碼植入MBR的詳細過程,完成以後每次機器,必須輸
入字母$才能引導DOS,按其他鍵均死機。運行上面那段程式把MBR讀入記憶體,然後
按照以下步驟實現(要輸入的部分是黑體):
-u218
136A:0218 EA1D060000 JMP 0000:061D
-a218
136A:0218 CALL 0000:06E0 (通過調用副程式來執行加密代碼)
-a2e0
136A:02E0 MOV AH,0
136A:02E2 INT 16 (從鍵盤接收一個字元)
136A:02E4 CMP AH,24 (是$嗎?)
136A:02E7 JE 02EB (是,返回)
136A:02E9 JMP 02E9 (不是,進入閉環)
136A:02EB RET
136A:02EC
最後用INT 13H的寫功能將內容寫回MBR就大功告成了。 有一點需要說明,裝了Win95/98之後,MBR中爲空的部分就不到206位元組了。
所以上面從2e0處開始寫代碼可能不適合於你的硬碟,我是裝完Win95/98之後,
把DOS的MBR代碼部分找回來,把新的給覆蓋了。這樣做可以獲得更多的空餘空間
來嵌入加密代碼,對作業系統又沒什麽影響,比較不錯。現在DOS不多見了,需要
的話給我寫信。我曾經寫了一段“十位元密碼確認”的代碼,由於設計了比較好看
的介面,MBR放不下,還利用了0磁軌的第2磁區。過幾天整理一下貼出來。
(待續)
※ 來源:.辛巴達 sinbad.dhs.org. [FROM: WWW] *********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together!
希望能大家敞開心胸,將知識寶庫結合一起
------ **********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好
Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
|