4

これは、スーパーブロックの読み取りに関する私の質問の続きです。

Mac OS X で HFS+ ファイル システムをターゲットにしたいとします。ブート ディスクのセクター 2 を読み取るにはどうすればよいでしょうか? 私が知る限り、Unix はファイルから読み取るためのシステム コールのみを提供し、ファイルはその場所に保存されることはありません。

これには、1) プログラムをカーネル モードで実行する必要がありますか、それとも 2) プログラムをアセンブリで作成する必要がありますか? これらの制限のいずれか、特に後者は避けたいと思います。

4

4 に答える 4

6

私はこれを Mac で自分で行いました。私のディスク エディター ツールを参照してください: http://apps.tempel.org/iBored

/dev/diskN または /dev/rdiskN (N は 0 から始まるディスク インデックス番号) を使用してドライブを開きます。次に、lseek (必ず 64 ビット範囲のバージョンを使用してください!) を使用し、開いたファイルに対して読み取り/書き込み呼び出しを行うことができます。

また、シェル コマンド「ls /dev/disk*」を使用して、現在存在するドライブを確認します。また、「sM」拡張子を持つドライブも存在することに注意してください。ここで、M はパーティション番号です。そうすれば、パーティションを直接読み取ることもできます。

または、シェル ツール「xxd」または「dd」を使用してデータを読み取り、その出力を使用することもできます。もっと簡単かもしれません。

ただし、root として実行しない限り、ルート ディスクやその他の内部ディスクを読み取ることはできません。ユーザーによってマウントされているか、アクセス許可が無効になっている限り、他のドライブにアクセスできる場合があります。ただし、最初にドライブのボリュームをアンマウントする必要がある場合もあります。シェル コマンド「diskutil」で unmount コマンドを探します。

お役に立てれば。

2017 年の更新: OS X 10.11 以降では、 SIPによってディスク セクターへの直接アクセスが妨げられる場合もあります。

于 2008-12-05T17:58:47.110 に答える
5

/dev/sdaLinux では、読み取りたいハード ドライブが最初のものであると仮定して、特殊なデバイス ファイルから読み取ることができます。このファイルを読むには root になる必要があります。セクター 2 を読み取るには、オフセットを求めてバイト単位2*SECTOR_SIZEで読み取るだけです。SECTOR_SIZE

このデバイス ファイルが OS X で利用できるかどうかはわかり/devませ/dev/sda/dev/hda

于 2008-12-04T21:10:29.380 に答える
1

また、ボリュームの /dev/ デバイス ファイルをヒットすることを提案するつもりでしたが、hfsdebug ユーティリティを作成し、おそらくやりたいことを実行した Amit Singh に連絡することをお勧めします。

于 2008-12-04T21:38:01.680 に答える
0

これは、アクセス許可に関してどのように機能しますか? /dev/... からの読み取りは安全ではありませんか?

于 2008-12-05T04:08:07.367 に答える