如何在Win2000之下讀取MBR的內容?





megad
2001-12-22, 05:16 PM
各位高手:

因為想要把資訊放在不會被format掉的地方,所以才想問大家:有沒有辦法在win2000運作之下讀取MBR之中的資料?
或者:有沒有辦法在win2000之下讀取指定的磁軌?這樣我可以把資訊放在non-partition的剩餘空間。

請大家提供意見,謝謝!

Mega




阿 土
2001-12-22, 05:34 PM
有那麼神奇的作法 ? 你確定你有做過或是聽說過嗎 ?

MBR 的小小空間恐怕並不足以讓您去儲存您需要儲存的檔案

所以可能是無解吧

kkk329
2001-12-22, 08:25 PM
MBA 的空間好像連1 MB都沒有吧~~

megad
2001-12-22, 08:31 PM
感謝各位的回應。
我只想存一組字串類似ID作為辨識,只要幾個bite就可以了。
在window2000之下,好像要自己寫driver才能直接存取硬碟,所以想請問大家有沒有其他的方法可以直接讀取指定磁區的資料。

rEdS
2001-12-22, 11:37 PM
最初由 megad 發表
各位高手:

因為想要把資訊放在不會被format掉的地方,所以才想問大家:有沒有辦法在win2000運作之下讀取MBR之中的資料?
或者:有沒有辦法在win2000之下讀取指定的磁軌?這樣我可以把資訊放在non-partition的剩餘空間。

請大家提供意見,謝謝!

Mega

我有個疑問??
如果MBR沒有記錄的partition你要如何將檔案存進去???
如果你怕被人format你可利用windows2000的permission來限制user
不必大廢周章的去玩MBR,風險實在是太大了吧??
而且只要拿得到你的hd的人還是可以format你的hd的....
ps:你如果真的想要搞的話,你可以參考一下旗標出版的"PCDIY2000硬碟玩家實戰"
第九章,裡面有你想要的工具和解說.保重~~~

C.C.
2001-12-23, 12:13 AM
我想你應該想做類似保護的程式吧.
可用 CreateFile 的方式來存取 MBR. 但你必須是 Administrator
hDevice = CreateFile("\\\\.\\PhysicalDrive0", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0);
然後再用 SetFilePointer(hDevice, 0, 0, 0); 便可移到 MBR (Offset 單位是 Bytes)
一個 Sector = 512 Bytes.

rEdS
2001-12-23, 12:38 AM
最初由 C.C. 發表
我想你應該想做類似保護的程式吧.
可用 CreateFile 的方式來存取 MBR. 但你必須是 Administrator
hDevice = CreateFile("\\\\.\\PhysicalDrive0", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0);
然後再用 SetFilePointer(hDevice, 0, 0, 0); 便可移到 MBR (Offset 單位是 Bytes)
一個 Sector = 512 Bytes.

對不起,小的看不太懂
能不能麻煩你解釋清楚一點
謝謝你
:)

C.C.
2001-12-23, 12:56 AM
CreateFile & SetFilePointer 為 WIN32 API.
當你檔名為 \\.\PhysicalDrive0 指的就是第一個硬碟.
因此你可用 CreateFile 來開啟 \\.\PhysicalDriver0
再用 SetFilePointer 來指定所要讀或寫的 Sector (MBR:Cylinder 0 Head 0 Sector 1)
接下來便用 ReadFile/WriteFile 來讀寫硬碟的資料
在 SetFilePointer 中的 Offset 等於你所要存取的 Sector No * 512

在以前 DOS 下, Norton Disk Editor 為最好的硬碟編輯程式(有人喜歡 PCTOOLS)
在 32 bits Windows 下, 我知道的只有 WinHex 比較好用 (但還是比不上 DiskEditor)

rEdS
2001-12-23, 01:04 AM
3Q~