NTFS読み取りポイントの分析

目次

DBR

$MFT

$ルート

文書記録

ファイルとMFTシリアル番号を除くインデックス情報には不正確な値が含まれる可能性があり、すべてがMFT内の情報に従うことに注意してください。


 

DBR

DBR の最初の 3 バイトは通常 EB 52 90 で、EB はアセンブリ内の JMP、90 は nop です。一緒に、EB 52 を数えて 52 バイトジャンプし、0x54H にジャンプして実行を開始します。このパーティションにオペレーティング システムがインストールされていない場合、0x54H ~ 0x200H は無効です。

ファイル システム ID (0x03) を使用してファイル システムを決定できます。

クラスターのサイズは、クラスターあたりのセクター数 (0x0d) * セクターあたりのバイト数 (0x0b) であり、必ずしも 4K であるとは限りません。解析されたデータの順序が乱れていて識別できない場合は、まずクラスター サイズを確認します。

MFT サイズ (ファイル レコード サイズ、0x40、1 バイト、タイプ int8) が正の数の場合、単位はクラスターです。ファイル レコード サイズ (バイト数) = MFT サイズ * クラスター サイズ。-4 などの負の数の場合、ファイル レコード サイズ (バイト) = 2 の 4 乗、たとえば、-6 の場合、ファイル レコード サイズ (バイト) = 2 の 6 乗になります。

$MFT 開始クラスター番号 (0x30) この情報とオフセットにより、次のファイル レコードを正確に取得できます。

  • 最初のレコードは MFT 自体です。MFT ファイル自体の重要性により、ファイル システム構造の信頼性を確保するために、システムは MFT の 2 番目のレコードであるミラー ファイル ($MftMirr) を特別に準備します。 
  • 3 番目のレコードはログ ファイル ($LogFile) です。このファイルは、回復性とセキュリティを考慮して NTFS によって設計されています。システムの実行中、NTFS は、ファイルの作成やディレクトリ構造を変更するコマンド (コピーなど) を含む、NTFS ボリューム構造に影響を与えるすべての操作をログ ファイルに記録します。これにより、システムの実行時に NTFS ボリュームを復元できるようになります。失敗します。 
  • 4 番目のレコードはボリューム ファイル ($Volume) で、ボリューム名、フォーマットされたボリュームの NTFS バージョン、およびディスクが破損しているかどうかを示すフラグ (NTFS システムは、修復するために Chkdsk プログラムを呼び出す必要があるかどうかを判断します) を含みます。 )。 
  • 5 番目のレコードは属性定義テーブル ($AttrDef、属性定義テーブル) で、ボリュームでサポートされているすべてのファイル属性が保存され、それらの属性にインデックスを付けて復元できるかどうかが示されます。 
  • 6 番目のレコードはルート ディレクトリ ($Root) で、ボリュームのルート ディレクトリに格納されているすべてのファイルとディレクトリのインデックスが格納されます。ファイルにアクセスした後、NTFS はファイルの MFT 参照を保持し、2 回目にはファイルに直接アクセスできます。 
  • 7 番目のレコードはビットマップ ファイル ($Bitmap) です。NTFS ボリュームの割り当てステータスはビットマップ ファイルに保存され、各ビット (ビット) がボリューム内のクラスタを表し、クラスタが空きであるか割り当てられているかを示します。ファイルは簡単に拡張できるため、ボリュームNTFS のファイルシステムは動的に拡張できるのに対し、FAT 形式のファイルシステムは FAT テーブルの変更を伴うため、パーティションのサイズを自由に調整できません。 
  • 8 番目のレコードはブート ファイル ($Boot) です。これは、Windows 2000/XP のブート プログラム コードを格納するもう 1 つの重要なシステム ファイルです。システムを適切に起動するには、このファイルが特定のディスクの場所に存在する必要があります。このファイルは、フォーマット プログラムの実行時に作成されます。これは、NTFS がディスク上のすべてをファイルとして扱うという原則を反映しています。これは、ファイルが NTFS システムのさまざまなセキュリティ保護を受けているにもかかわらず、通常のファイル I/O 操作を通じて変更される可能性があることも意味します。 
  • 9 番目のレコードは不良クラスター ファイル ($BadClus) です。このファイルには、ディスク上のボリューム内の破損したクラスター番号がすべて記録され、システムによるクラスター番号の割り当てと使用が妨げられます。 
  • 10 番目のレコードはセキュリティ ファイル ($Secure) で、ボリューム全体のセキュリティ記述子データベースが保存されます。NTFS のファイルとディレクトリには独自のセキュリティ記述子があり、領域を節約するために、NTFS では同じ記述子を持つファイルとディレクトリを共通のファイルに保存します。 
  • 11 番目のレコードは大文字ファイル ($UpCase、大文字ファイル) で、大文字と小文字の変換テーブルが含まれています。 
  • 12 番目のレコードは拡張メタデータ ディレクトリ ($Extended メタデータ ディレクトリ) です。 
  • 13 番目のレコードは再解析ポイント ファイル ($Extend\$Reparse) です。 
  • 14 番目のレコードは変更ログ ファイル ($Extend\$UsnJrnl) です。 
  • 15 番目のレコードはクォータ管理ファイル ($Extend\$Quota) です。 
  • 16 番目のレコードはオブジェクト ID ファイル ($Extend\$ObjId) です。 
  • 17 番目から 23 番目のレコードは、将来の拡張のためにシステムによって予約されています。 

注: システム予約ファイル レコード以外の他のレコードが $MFT 開始クラスター番号 (0x30) から計算される場合、MFT フラグメントが検出されるとエラーが発生するはずです。

MFT (ファイル レコード) 断片化: 最初に、システムはディスク全体の 12% (レジストリで制御可能) をファイル レコードの保存に割り当てます。ファイルが断片化されすぎている場合、新しい MFT を保存するためにデータ領域に追加のスペースが割り当てられます。新しい MFT が $MFT 開始クラスター番号 (0x30) + MFT シリアル番号 * MFT サイズによって取得された場合、それは確実に取得されません。得られた。

$MFT

$MFT は、MFT の最初のファイル レコードです。

  • シリアル番号 (0x30) を更新、配列を更新

ファイル レコードが複数のセクターにまたがる場合、セクターの最後の 2 バイトは更新シーケンス番号であり、実際の値は更新配列内の値 (0x32) です。

たとえば、最初のセクターの実際の値は 0x34 で、2 バイトを占めます。n 番目のセクターの場合、実際の値は 0x34+2*n で、2 バイトを占めます。

 

最も注目すべきは属性 80 です。

この MFT によって分析される LCN は MFT の位置であり、対応する MFT 位置は、MFT シリアル番号 * MFT サイズに従って LCN 内で見つかります。

$ルート

$Root はルート ディレクトリです。MFT 範囲を読み取った後に $Root を読み取ります。

文書記録

更新順序と更新配列は$MFTと同じです。

標準情報 0x10 属性は永続的です。

属性リスト 0x20 属性。複数存在する可能性があり、各ファイル レコードは 1 つだけですが、ファイルには複数のファイル レコードが存在する場合があります。コンテンツが常駐している場合は属性コンテンツであり、常駐していない場合はデータ実行 (DataRun または Run List) であり、属性コンテンツはデータ実行内にあることに注意してください。

ファイル名 0x30 属性、永続的。複数のファイル名が存在する場合があります。

ファイル属性リスト 0x80 属性。常駐している場合は、標準属性ヘッダーの後にファイルの内容が続き、常駐していない場合は、データ ストリーム Data Run が続きます。

インデックス ルート 0x90 属性、常駐。90 属性は複数存在する場合がありますが、NTFS を読み取る場合は、ネームスペースが $I30 である属性のみが読み取られます。$I30 はファイル ディレクトリを表し、ファイルの基本属性が含まれます。

インデックスは属性 0xa0 属性を割り当てます。複数ある場合がありますが、これが Data Run です。

ビットマップ属性 0xB0 属性。1 ビットのコンテンツは、クラスターが有効かどうかを表します。

0x90 属性と 0xA0 属性に格納されたインデックス ルートは、単純な文字列ソートによってソートされます。

Data Run を分析する場合、最初の LCN は絶対アドレスであり、2 番目の LCN は最初の LCN の相対アドレス (正または負の可能性があります) であることに注意してください。

ファイルとMFTシリアル番号を除くインデックス情報には不正確な値が含まれる可能性があり、すべてがMFT内の情報に従うことに注意してください。

 

居住財産
0x10
0x30
0x90

非常駐属性
0xa0

おすすめ

転載: blog.csdn.net/sinat_36391009/article/details/117024374