7

Windows の MBR を変更する必要があり、これを Windows から実行したいと考えています。

これが私の質問です。CreateFile を呼び出すと、物理デバイスのハンドルを取得できることがわかっています。MBR は常に \\.\PHYSICALDRIVE0 にありますか? また、ディスクから直接読み取る Windows API についても学習中です。readabsolutesectors と writeabsolutesectdors は、MBR を含むディスク セクターの読み取り/書き込みに使用する必要がある 2 つの関数ですか?

自分で学んだことから編集します。MBR は常に \\.\PHYSICALDRIVE0 にあるとは限りません。また、MBR を含むドライブのデバイス名を指定して CreateFile を呼び出すことにより、(少なくとも XP では管理者として) ブートセクタに書き込むことができます。また、WriteFile を呼び出し、CreateFile を呼び出して作成されたデバイスのハンドルを渡すだけで、このドライブに書き込むことができます。

Joel Coehoorn に対処するために編集します。BIOS での POST の後、Windows の起動を許可する前に、ハードウェア レジスタを変更する必要があるプロジェクトに取り組んでいるため、MBR を編集する必要があります。私たちの計画は、Windows が起動する前にコードを実行するようにブートローダーを変更することで、これらの変更を行うことです。

Cd-MaN 用に編集します。情報をありがとう。ただし、あなたの答えには、私が知らなかったことは何もありません。また、あなたの答えは私の質問に対応していません。特にレジストリは、複数の理由で必要なことを絶対に行いません。その大きな理由は、Windows が、当社の製品で実行される複数のソフトウェア レイヤーの中で最上位のレイヤーであることです。これらの変更は、下位レベルが実行される前に行う必要があるため、レジストリは機能しません。

Cd-Man の PS。私が理解しているように、あなたが提供する情報は完全に正しくありません。Vista の場合、書き込み対象のセクターがブート セクターであれば、ボリュームに書き込むことができると思います。http://support.microsoft.com/kb/942448を参照してください。

4

3 に答える 3

7

OS が起動すると、通常、MBR はウイルスの理由で保護されます。これは、書籍の中で最も古いウイルスの手口の 1 つです。フロッピーからフロッピーにウイルスを渡すことに戻ります。

制限されていない場合でも、低レベルのコードを記述する必要があります。これはファイル システムの一部ではなく、ハード ドライブの特定の場所に存在します。

そのため、低レベル (ほとんどのプログラムはこれをアセンブリで実装します) または 16 ビット DOS をターゲットとする C コードを書くことにほとんど制限されています。

これらのプログラムのほとんどは、ディスクのセクターに直接アクセスするためにBIOS インターフェイス(13h だと思います) を使用します。インライン アセンブリまたはコンパイラが提供するインターフェイスを使用して、C でこれらにアクセスできます。ただし、通常、OS の協力なしに BIOS にアクセスすることはできないため、プログラムもまた DOS に制限されます。これらにアクセスできれば、ほとんど家から解放されます。BIOS の良いところは、システムに搭載されている HD のタイプを気にする必要がないことです。RAID カードでさえ、BIOS ルーチンに挿入されることが多く、アクセスできるようになっています。 ATA または SATA コントローラがメモリ内のどこにあるかを知らずに、その低レベルでコマンドを実行します。

ただし、OS 内で絶対にアクセスする必要がある場合は、BIOS または HD コントローラーが存在するメモリ空間にアクセスするためのデバイス ドライバーを作成する必要があります。ただし、これは対処が非常に難しいため、お勧めしません。最新のコンピューターでは、HD コントローラーがメモリ内のさまざまな場所に配置され、さまざまな IRQ が使用されています。各チップセットは、最小限のインターフェイスを提供できるため、少し難解になっています。ブートアップ用の BIOS に、次に Windows 用の特定のドライバーに。互換性を保つにはコストがかかるため、他のコントローラーと互換性があると見なされる他のすべてのインターフェイスの細かな点をスキップします。

Windows 内のドライバー レベルでは、ドライブ セクターに直接 (または疑似直接) アクセスする方法があることに気付くかもしれませんが、前述のウイルスの問題により、それらは非常によく保護されている可能性があります。

幸運を!

于 2008-09-02T18:25:28.517 に答える
4

ブートローダーを変更するのは悪いことです。考えられる落とし穴のほんの一部を次に示します。

  • ディスク全体の暗号化製品 (Truecrypt、PGP、Vista の BitLocker など) を無効にする可能性があります。
  • AV製品をつまずかせる可能性があります(ユーザーを怖がらせます)
  • 複雑なブート シナリオ (チェーン ブート ローダーなど) を強制終了する可能性があります。
  • TPMモジュールを使用すると、信頼のチェーンが切断されます(実行前にMBRの変更をチェックするため)
  • Vista以降、直接ディスクアクセスは許可されていません(ドライバーのみを使用)

代替手段 (ブート時または Windows のブート後にロードするように設定されたドライバーを介して、Windows のブートアップ中にハードウェア レジスタを変更するなど) を実際に検討する必要があります。変更がポートへの書き込みと同じくらい簡単な場合、つまり:

OUT AX, BL

次に、ユーザーモードから呼び出すことができる、これを実行できるすべてのバージョンの Window 用のドライバー (特定のポートとの間で値を読み書きする) が存在します。

于 2008-09-02T16:49:40.680 に答える
2

たぶん、PXE ブート シナリオが役に立ちますか? 変更が必要なハードウェア レジスタを変更する巧妙に細工された PXE イメージで起動し、制御をマスター ブート レコードまたはアクティブ パーティションのブート レコードに戻すだけです。

この方法では、ブート レコードを変更する必要はありません。

于 2008-09-15T20:11:48.120 に答える