安 全 處 理 硬 盤 的 幾 個 有 效 方 法 |
|
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
此為轉貼資料
http://www.pcworld.com.cn/98/manus/9806/061001e.html
安 全 處 理 硬 盤 的 幾 個 有 效 方 法
李 莉 莉
一. 解 除 硬 盤 分 割 的 妙 法
---- NORTON8.0 中 的DISKREET. SYS 提 供 的 加 密 方 法 確 實 很 好, 其 加 密 的 程 度 經 過 美 國 中 央 情 報 局 測 試, 可 以 說 是 無 法 解 密, 當 你 忘 記 了 口 令 怎 麽 辦? 它 占 去 了32MB 的 硬 盤 就 無 法 使 用。 如 果 把 硬 盤 格 式 化, 盤 上 有 用 的 重 要 數 據 就 會 丟 失。 下 面 介 紹 一 個 簡 單 的 刪 除 辦 法:
---- 1. 在 有 加 密 盤 符 的 硬 盤 上 用DIR/A, 可 以 發 現 一 個 以@ #! 爲 擴 展 名 的 文 件, 其 大 小 與 建 立 加 密 盤 符 大 小 相 等。
---- 2. 用ATTRIB 可 以 發 現 其 屬 性 爲S、H、R。
---- 3. 用ATTRIB 可 以 改 變 其 屬 性:“ATTRIB -S-H-R *.@ #!”。
---- 4. 用DEL 就 可 以 輕 松 的 刪 除 它:DEL *.@ #!
---- 這 樣 硬 盤 的 其 它 數 據 保 住 了, 空 間 也 有 了。
二. 不 破 壞 硬 盤 數 據 進 行 重 新 分 區 的 方 法
---- 大 家 知 道 新 購 進 的 機 器 在 硬 盤 當 中 大 都 附 帶 了 很 多 軟 件 而 且 只 有 一 個 分 區C, 而 在 實 際 應 用 中 我 們 常 常 需 要 多 個 區, 如 果 先 備 份C 盤 中 的 內 容 然 後 再 分 區, 工 作 量 又 很 大。 我 經 過 摸 索 找 出 了 一 種 比 較 簡 單 的 方 法, 在 不 破 壞 數 據 的 情 況 下 可 對 硬 盤 進 行 重 新 分 區, 過 程 如 下:
---- 首 先 利 用CHKDSK /F 來 收 回 磁 盤 丟 失 的 空 間, 再 用DOS6. XX 提 供 的 磁 盤 優 化 工 具 Defrag 對 硬 盤 進 行 優 化, 檢 查 一 下 磁 盤 的 利 用 情 況, 來 確 定 分 區 的 大 小。 然 後 利 用 Debug 將 分 區( 即C 盤) 引 導 扇 區 的 內 容 讀 出 形 成 一 個 文 件( 備 用), 具 體 的 執 行 過 程 如 下:
A:\>DEBUG
-N BOOT
-L 200 2 0 1
-RCX
CX:0000
:0200
-W 200
writing 00200 bytes
-Q
---- 接 著 利 用FDISK 命 令 刪 除 主DOS 分 區, 對 硬 盤 重 新 分 區, 分 區 的 大 小 可 根 據 自 己 的 需 要, 但 一 定 要 防 止 將 原 來C 盤 上 的 數 據 分 割 在 兩 個 區, 否 則 會 造 成 數 據 的 丟 失。 注 意: 分 完 區 以 後 要 設 置C 區 爲 主 引 導 區, 絕 對 不 要 對C 盤 進 行 格 式 化!
---- 下 面 的 操 作 是 將 備 份 出 來 的 分 區 引 導 扇 區 的 內 容 重 新 寫 回 原 處:
A:\>DEBUG
-N BOOT
-L 200
-A 100
XXXX:0100 MOV AX 0301
XXXX:0103 MOV BX 0200
XXXX:0106 MOV CX 0001
XXXX:0109 MOV DX 0180
XXXX:010C INT 13
XXXX:010E INT 20
XXXX:0110
-G=100
program terminated normally
-Q
---- 操 作 完 以 後, 用 軟 盤 重 新 啓 動 機 器, 利 用SYS C: 將 系 統 傳 送 至C 盤, 格 式 化 新 分 出 來 的 區, 這 時 你 的 硬 盤 上 即 有 多 個 分 區 了。
---- 在 操 作 之 前, 請 你 先 格 式 化 一 張 系 統 盤, 拷 出 一 些 必 要 的 文 件Fdisk.EXE、Debug. EXE、 SYS.COM。 只 要 你 按 照 上 面 的 方 法 正 確 地 去 操 作, 不 必 擔 心 原 來C 盤 上 的 數 據 丟 失。( 建 議: 爲 防 止 誤 操 作, 分 區 前 最 好 做 硬 盤 備 份。)
三. 隱 藏 硬 盤 邏 輯 驅 動 器 的 方 法
---- 隨 著 計 算 機 硬 盤 容 量 的 逐 漸 增 加, 多 數 用 戶 都 在 一 個 硬 盤 上 建 立 多 個 邏 輯 驅 動 器, 並 把 自 己 獨 享 的 文 件 或 系 統 單 獨 放 在 某 個 邏 輯 盤 上, 用DOS 外 部 命 令SUBST 把 一 個 邏 輯 盤 與 另 一 個 邏 輯 盤 上 的 某 一 子 目 錄 相 連 接, 並 將 其 加 到Autoexec.bat 文 件 中。 但 此 法 對 一 般 熟 悉DOS 的 用 戶 來 說, 只 要 用 命 令SUBST 加 參 數 /d 即 可 解 除 聯 接, 所 以 希 望 能 找 一 種 更 可 靠 有 效 的 方 法 隱 藏 自 己 的 邏 輯 盤。
---- 本 文 通 過 對DOS 硬 盤 管 理 的 主 引 導 記 錄 中 分 區 表 的 分 析, 給 出 了 用Diskedit (Nortin8.0 的 一 個 應 用 程 序) 。 尋 找 邏 輯 盤 分 區 表 及 修 改 分 區 表, 從 而 隱 藏 邏 輯 盤 的 具 體 方 法。
---- 硬 盤 的 主 引 導 記 錄 在 硬 盤 的0 磁 頭0 柱 面1 扇 區。 主 引 導 記 錄 由 三 部 分 組 成:(1) 主 引 導 程 序;(2) 四 個 分 區 表;(3) 主 引 導 記 錄 有 效 標 志 字。 詳 見 表1。
---- 表1 主 引 導 記 錄 結 構
位 置 內 容
0000H -00D9H 主 引 導 記 錄 代 碼 區
00DAH -01BDH 空 閑 區
01BEH -01CDH 分 區1 結 構 信 息
01CEH -01DDH 分 區2 結 構 信 息
01DEH -01EDH 分 區3 結 構 信 息
01EEH -01FDH 分 區4 結 構 信 息
01FEH -01FFH 55 PAAH 主 引 導 記 錄 有 效 標 志
---- 分 區 表 自 偏 移1BEH 處 開 始, 分 區 表 共64 個 字 節, 表 中 可 填 入 四 個 分 區 信 息, 每 十 六 個 字 節 爲 一 個 分 區 說 明 項, 這16 個 字 節 含 義 詳 見 表2。
---- 必 須 注 意: 扇 區 號 的 高 二 位 占 用 柱 面 號 所 在 字 節 的 最 高 二 位, 即 柱 面 號 爲10 位, 扇 區 號6 位。
---- 表2 分 區 結 構 信 息
偏 移 長 度 含 義
00H 1 活 動 分 區 指 示 符, 該 值 爲80H 表 示 爲 可 自 舉 分 區
( 僅 有 一 個), 該 值 爲00H 表 示 其 餘 分 區。
01H 1 分 區 起 始 磁 頭 號。
02H 1 低6 位 是 分 區 開 始 的 扇 區, 高2 位 是 分 區 開 始 的
柱 面 的 頭 兩 位。
03H 1 分 區 開 始 的 起 始 柱 面 號 的 低8 位。
04H 1 系 統 標 志, 該 值 爲01H 表 示 采 用12 位FAT 格 式
的DOS 分 區, 該 值04H 表 示 采 用16 位FAT 格
式 的DOS 分 區, 該 值 爲05H 表 示 爲 擴 展DOS 分
區, 爲06H 表 示 爲DOS 系 統。
05H 1 分 區 終 止 頭 號
06H 1 低6 位 爲 分 區 結 束 的 扇 區 號, 頭2 位 爲 結 束 柱 面
號 的 前2 位。
07H 1 分 區 結 束 柱 面 號 的 低8 位。
08H 4 本 分 區 前 的 扇 區 數, 低 位 字 節 在 前。
0CH 4 本 分 區 總 的 扇 區 數, 低 位 字 節 在 前。
---- 1. 邏 輯 盤 分 區 表 的 尋 找
---- 下 面 以 一 台 微 機 硬 盤 分 區 表 爲 例, 說 明 如 何 用Diskedit.exe 尋 找 邏 輯 盤 分 區 表。
---- 首 先 運 行Diskedit.exe, 用object 菜 單 的Partition table( 分 區 表) 將 硬 盤0 磁 頭 0 柱 面1 扇 區 的 數 據 讀 出, 這 是 第 一 個 分 區 表( 自 偏 移01BEH 處 開 始), 詳 見 表3。
---- 表3 第 一 個 分 區 表
80 01 01 00 06 1F 3F 98 3F 00 00 00 A1 B4 04 00
00 00 01 99 05 1F BF 0E E0 B1 04 00 40 81 0B 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
---- 這 裏, 每 行 十 六 個 字 節, 爲 一 個 分 區 說 明, 數 據 爲 十 六 進 制。
---- 第 一 個 分 區: 活 動 分 區 指 示 符 爲80H, 表 示 該 分 區 爲 可 自 舉 分 區。
---- 系 統 標 志 爲06H 表 示 是DOS 系 統, 即C 盤。
---- 第 二 個 分 區: 系 統 標 志 爲05H, 說 明 該 分 區 是 擴 展Dos 分 區。
---- 第 三、 四 個 分 區 數 據 均 爲00H, 沒 有 定 義。
---- 從 擴 展DOS 分 區 說 明 項( 即 第 二 個 分 區) 知 下 一 個 分 區 表 位 於: 起 始 磁 頭 爲0 頭, 起 始 柱 面 爲99H=153D, 起 始 扇 區 爲1 扇 區。
---- 利 用Diskedit 的Physical Sector 項。 把 第153 簇,0 磁 頭1 扇 區 的 數 據 讀 出, 得 到 第 表2 個 分 區 表, 詳 見 表4( 自 偏 移1BEH 處 開 始)。
---- 表4 第 二 個 分 區 表
00 01 01 99 06 1F 7F C9 3F 00 00 00 A1 61 09 00
00 00 41 CA 05 1F BF 0E E0 61 09 00 60 1F 02 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
---- 該 分 區 表 的 格 式 和 含 義 同 第 一 個 分 區 表。
---- 第 一 個 分 區 說 明 項: 該 分 區 指 示 符 爲00H, 說 明 爲 不 可 引 導 分 區。 系 統 標 志 字 節 爲06H 說 明 爲DOS 分 區, 即 邏 輯D 盤。
---- 第 二 個 分 區 說 明 項: 系 統 標 志 字 節 爲05H, 說 明 是 擴 展DOS 分 區
---- 第 三, 四 個 分 區 說 明 項 數 據 均 爲00H 沒 有 定 義。
---- 由 第 一 個 分 區 說 明 項 知D 盤 開 始 於153 簇0 爲1 扇 區。
---- 由 擴 展 分 區 說 明 項 知, 擴 展 分 區 表 起 始 簇 號 爲01CAH=458D, 起 始 磁 頭 爲0 頭,1 扇 區。
---- 再 次 利 用Diskedit 的Physical Sector, 把458 簇0 磁 頭1 扇 區 的 內 容 讀 出( 自 偏 移0 1BEH 處 開 始), 得 到 第 三 個 分 區 表, 詳 見 表5。
---- 表5 第 三 個 分 區 表
00 01 41 CA 06 1F BF 0E 3F 00 00 00 21 1F 02 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
---- 這 是 第 三 個 分 區 表
---- 該 分 區 表 的 第 一 個 分 區 說 明 項 表 明, 本 分 區 是DOS 分 區, 不 可 引 導。
---- 自 第 二 個 分 區 說 明 項 開 始, 全 爲00H 說 明 後 面 不 再 有 分 區 表。
---- 由 上 可 知:
---- 每 一 個 分 區 表 中 擴 展 分 區 說 明 項 實 際 上 指 示 下 一 個 分 區 表 的 位 置 ( 簇, 磁 頭 號, 扇 區 號)。 最 後 一 個 分 區 表 沒 有 擴 展 分 區 說 明 項。
---- 每 一 個 分 區 表 都 會 有 一 個 實 際 分 區 說 明 項, 也 就 是 對 邏 輯 盤 的 實 際 起 始、 終 止 位 置 進 行 說 明。
---- 除 邏 輯 盤C 主 引 導 記 錄 及 分 區 表 共 占 用 一 個 扇 區, 其 它 分 區 表 則 各 占 一 個 扇 區, 自 該 扇 區01BEH 處 開 始, 以55AAH 結 束。
---- 2. 邏 輯 盤 的 隱 藏
---- 如 將D 盤 隱 藏, 則 首 先 找 到C 盤 主 引 導 扇 區(0 簇0 頭1 扇 區) 中 的 分 區 表( 自 偏 移1BEH 處) 。 讀 出 擴 展 分 區 說 明 項 的 數 據, 根 據 上 面 介 紹 方 法, 找 到 第 二 個 分 區 表。 將 該 分 區 表 中 的 第 一 個 分 區 說 明 項 中 的 系 統 標 志 字 節06H 修 改 爲00H ( 表 示 無 此 分 區), 則DOS 重 新 啓 動 後, 就 會 繞 過 該 分 區 而 將E 盤 當 作D 盤, 從 而 達 到 隱 藏D 盤 的 目 的。
---- 如 想 隱 藏C 盤, 則 將 第 一 個 分 區 說 明 項 的06H 改 爲00H, 則 用 軟 盤 啓 動 後, 就 會 將D 盤 當C 盤,E 盤 當D 盤。
---- 也 就 是 說, 第 一、 第 二、 第 三 分 區 表 中 的 實 際 分 區 說 明 項 按 其 順 序 分 別 描 述C、D、 E 盤。 如 將 某 一 分 區 表 說 明 項 的 系 統 標 志 字 節006H 改 爲00H,DOS 便 認 爲 沒 有 該 分 區( 或 該 邏 輯 盤 沒 有 使 用), 而 將 下 一 個 分 區 表 所 描 述 的 分 區( 或 邏 輯 盤) 當 作 現 在 的 邏 輯 盤。
---- 如 想 恢 複 已 隱 藏 的 邏 輯 盤, 只 需 將 對 應 分 區 表 的 系 統 標 志 字 節 還 原 即 可。
四. 給 硬 盤 邏 輯 分 區 加 寫 保 護 的 方 法
---- 實 現 硬 盤 寫 保 護 有 著 名 軟 件ADM、DM, 安 裝 它 們 都 需 要 先 對 硬 盤 重 新 格 式 化 分 區, 倘 若 硬 盤 上 已 有 許 多 文 件, 就 會 破 壞 原 有 文 件。 基 於 這 一 點, 本 人 用TurboC + +3 .0, 編 譯 模 式Tiny, 用TASM 配 套 程 序, 對Fdisk 分 區 的 硬 盤,MS -DOS6 .22 下 編 譯 通 過 了 一 個 硬 盤 寫 保 護 程 序WRTPRT .C, 程 序 簡 單 易 行。
---- 其 實 現 原 理 很 簡 單, 衆 所 周 知, 幾 乎 所 有 與 磁 盤 操 作 有 關 的 調 用, 最 後 都 要 轉 到 BIOS 中 的INT13。 因 此 我 們 只 需 編 制 一 小 段 內 存 駐 留 程 序 接 管INT13, 使 所 有 的 磁 盤 操 作 都 必 須 先 經 過 該 駐 留 程 序 的 檢 測, 若 是 寫 操 作 則 攔 截 之, 若 爲 讀 操 作 則 調 用 原INT1 3 使 之 正 常 運 行。
---- 還 有 一 個 問 題 就 是 硬 盤 常 常 被 分 爲 多 個 邏 輯 分 區, 用 戶 可 能 只 想 對 其 中 一 個 或 幾 個 分 區 實 現 寫 保 護。 爲 此, 我 們 得 分 析 一 下INT13 的 入 口 參 數 及 硬 盤 分 區 表 鏈。
INT13 的 入 口 參 數 有:
AH= 功 能 號( 其 中3、5、7、0bH、0fH、13H、19H 爲 寫 操 作)
AL= 要 讀 / 寫 的 扇 區 數
CH= 柱 面 號
CL= 扇 區 號
DH= 磁 頭 號
DL= 驅 動 器 號( 其 中0 爲A:,1 爲B:,80H 爲 第 一 個 硬 盤)
---- 從AH 中 判 斷 是 否 爲 寫 操 作 而 決 定 是 否 攔 截 之, 從DL 中 可 以 判 斷 是 軟 盤 還 是 硬 盤, 最 後 一 個 問 題 就 是 怎 樣 判 斷 是 邏 輯C 區 還 是D 區、E 區 … … 它 們 是 不 是 應 該 寫 保 護 的 盤。
---- 我 們 用DEBUG 輸 入 一 小 段 彙 編 程 序
movdl,80; 驅 動 器 號
movdh,0; 磁 頭 號0
movch,0; 柱 面 號0
movcl,1; 扇 區1
moval,1; 扇 區 數
movbx,2000
movah,2; 讀 磁 盤
int13
int3
讀 出C 盤0 頭0 柱1 扇 區 的 內 容
xxxx:21be80010100 01031168 . . . . . .
xxxx:21ce00000169 . . . . . .
---- 偏 移1BF ~1C1 是C 區 的 起 始 磁 頭( 簡 稱H)、 起 始 扇 區( 簡 稱S)、 起 始 柱 面( 簡 稱C)
---- 偏 移1C3 ~1C5 是C 區 的 終 止H、 終 止S、 終 止C
---- 偏 移1CF ~1D1 是D 區 的 起 始H、 起 始S、 起 始C
---- 我 們 可 把1CF ~1D1 的 數 據 分 別 代 入 上 面 彙 編 程 序 的dh, cl,ch, 同 樣 可 讀 出D 區 的 分 區 信 息。
---- xxxx .21be00010169 010311cc . . . . . .
---- xxxx .21ce000001cd 05 . . . . . .
---- 其 中, 偏 移1BF ~1C1 是D 區 的 起 始H、 起 始S、 起 始C; 偏 移1C3 ~1C5 是D 區 的 終 止H、 終 止S、 終 止C; 偏 移1CF ~1D1 是E 區 的 起 始H、 起 始S、 起 始C。 同 樣 的 道 理, 我 們 可 讀 出E 區、F 區 … … 的 分 區 信 息。 這 便 是 硬 盤 分 區 表 鏈。
---- 我 們 可 由 分 區 表 鏈 取 得 要 寫 保 護 分 區 的 起 始、 終 止H、S、C, 但 有 一 點 要 注 意 的 是S 中 的 高2 位 與C 中 的8 位 組 合 成 的10 位 二 進 制 數 方 是 真 正 的C, 去 掉 高2 位 的S 方 是 真 正 的S。 例 從 某 分 區 讀 出 的 終 止S、C 分 別 爲51H、30H。
---- 可 見S 截 掉 高2 位 後 爲11H,C 加 上2 位 後 爲130H。
---- 把 變 化 後 的 起 始 和 終 止S、C 及H 保 存 起 來, 作 爲 真 正 的 起 始 和 終 止H、S、C。 同 樣 的 道 理INT13 的CL、 CH 中 的S、C 也 應 作 相 應 的 變 化。 這 時 我 們 便 可 以 確 定 下 面 不 等 式 的 成 立 與 否。
---- 保 存 的 真 正 起 始H,S,C〈=INT13 的 真 正H,S,C Ι= 保 存 的 真 正 終 止H,S,C 若 成 立 則 應 寫 保 護, 從 而 解 決 了 怎 樣 判 斷 哪 個 分 區 是 寫 保 護 分 區 的 問 題。
---- 但 實 際 上, 硬 盤 的 分 區 是 先 按 柱 面 分, 再 按 磁 頭 分, 最 後 按 扇 區 分 的。 因 此 我 們 的 判 斷 順 序 應 該 是 這 樣 的: 先 判 斷
---- 保 存 的 真 正 起 始C〈=INT13 的 真 正C Ι= 保 存 的 真 正 終 止C
---- 若INT13 的C 恰 好 等 於 保 存 的 終 止C, 則 應 進 一 步 判 斷H; 若INT13 的H 值 小 於 保 存 的 終 止H, 則 表 明 在 寫 保 護 盤 內; 若INT13 的H 大 於 保 存 的 終 止H, 則 表 明 超 出 了 寫 保 護 盤 的 範 圍, 若 等 於 則 應 進 一 步 確 定S; 若INT13 的S 值 大 於 保 存 的 終 止S 值 則 是 超 出 了 寫 保 護 盤, 反 之, 小 於、 等 於 則 是 在 寫 保 護 盤 內。 根 據 以 上 原 理, 我 們 不 難 把 程 序 編 制 出 來, 源 程 序 在 此 省 略。 編 譯 成 可 執 行 文 件 後 鍵 入 命 令 行:
---- WRTPRT [driver1 ] [driver2 ] [driver3 ] [driver4 ] [driver5 ]
---- 例: 要 對C: 和D: 寫 保 護 則 鍵 入 命 令 行
---- WRIPRTC:D:
---- 其 中 不 帶 參 數 的WRTPRT 默 認 爲 對C: 寫 保 護 *********************************************************
哈哈&兵燹
最會的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 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |