問題タブ [mbr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - Windows の MBR の変更
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を参照してください。
windows - Windowsが起動に使用したディスクを確認する方法
Windows が起動に使用しているディスク ドライブをプログラムで特定する方法を見つける必要があります。つまり、システム全体を起動するために BIOS がどのドライブを使用しているかを Windows から判断する方法が必要です。
Windows はこれを検出するためのインターフェイスを公開していますか? Windows API がどれだけ大きいかということを考えると、うまくいく何かがそこに埋め込まれていることを願っています。
テリー
ps ハードディスクの最初のセクタを読み取るだけでは何も楽しめません。私の開発ボックスには 2 つのハードディスクがあり、いずれかのハードディスクの最初の数セクタの内容を見ると、標準のボイラー プレート MBR があります。
いくつかのことを明確にするために編集します。デバイスを識別する方法は、(論理ディスク ドライブではなく) 物理ディスク ドライブを識別する文字列を使用することです。物理ディスク ドライブの形式は「\\.\PHYSICALDRIVEx」です。x は数字です。一方、論理ドライブは「\\.\x」という形式の文字列で識別されます。x はドライブ文字です。
編集して、捨てられたいくつかのアイデアについて話し合ってください。Windows がブートに使用した論理ボリュームを知っていても、ここでは役に立ちません。これが理由です。C: がミラーリングされた RAID セットアップを使用しているとします。これは、少なくとも 2 つの物理ドライブがあることを意味します。ここで、論理ドライブから物理ドライブへのマッピングを取得し、そのボリュームで使用されている 2 つの物理ドライブがあることを発見しました。Windows はどれを起動に使用しましたか? もちろん、これは、Windows の起動に使用される物理ドライブが、MBR を含む物理ドライブと同じであることを前提としています。
c# - P/Invoke を使用してファイルを作成し、ブート セクタを読み取って .MBR を表示する方法は?
CreateFile のドキュメントを参照しましたが、P/Invoke を使用して CreateFile を呼び出し、ブート セクタを読み取り、.MBR を表示するにはどうすればよいかまだ疑問に思っています。
この部分の参照コードはありますか? 前もって感謝します!
assembly - MBR コードを書く
私は最近、MBR のコードを変更する必要があることを発見した電気技師です。基本的に、OS が起動して引き継ぐ前に、HDD でコードを実行する機能が必要です。
これはアセンブリで記述する必要があり、MBR に 446 バイト程度のコード空間があることを十分に理解しています。MBR の外部で他のコードを呼び出すことを期待しています。私の質問は、MBR に書き込む最良の方法は何ですか? たとえば、ディスク HDD_1 の MBR を変更したい場合は、HDD_1 を別のマシンにスレーブしてから書き込みを行うか、現在のマシンで (ウィンドウの外部で) 直接書き込む方がよいでしょうか。基本的に、呼び出しを挿入し、MBR の残りの部分はそのままにしておくことにします。
任意の提案をいただければ幸いです
クリス
大変なことになるのは十分承知しております。私の質問は、MBR に命令を入れる最良の方法は何ですか? Windows がディスクへの直接アクセスを許可していないことは言うまでもありません。MBR に指示を書き込む方法を教えてください。おそらく *nix のライブ CD を起動し、そこから MBR に書き込みますか?
boot - BIOS はどのような情報を RAM にロードしますか?
起動時に、BIOS がメモリ 0x7c00 の定義済みデバイス ドライブの最初のセクター (512 バイト) をロードし、そのアドレスにジャンプすることを知っています。
つまり、0x7c00 から 0x7dff までのメモリが占有されています。占有されている RAM の他のセクションはありますか?
オペレーティング システムをプログラミングしている場合、自分の目的のために 0x7c00 から ox7dff を除くすべての RAM を使用できますか? または、上書きしてはならない、ブート時に「貴重な」情報で満たされた他のセクションがありますか?
特定の瞬間に、メモリにロードされた MBR (チェーンローディング) を上書きできることを知っています。私の質問は、オペレーティング システムで使用できるメモリの部分はどれですか?
私の悪い英語でごめんなさい。回答ありがとうございます!!
c - winapi c - システム ドライブの読み取り/書き込み mbr
システム ブート ハードディスクを識別し、Windows XP および Vista でハードディスクから mbr を読み書きする方法を示すコード例はありますか?
createfile を使用できることはわかっています。しかし、どのデバイスが起動デバイスであるかを正しく識別する方法がわかりません。
使用するものをどのように見つけますか?\.\Volume{GUID}\ または \?\Device\HarddiskVolumeX など?
documentation - PC MBRブートローダーのソースコードはどこにありますか?
できればよくコメントし、いくつかの関連するドキュメントとMakefileを付けてください。
明確にするために、これは、BIOSによってロードされ、ブートパーティション内のセカンダリブートローダーへのチェーンを担当するマシンコードの512バイト(512バイト-パーティションテーブル)未満です。
編集:Davidとbdonlanの両方の答えは有望に見えます。最小限のDosリンクはMBRのDebianソースパッケージに移動しますが、コメントされたWindows 2000 / XP MBRには、より詳細なコメントがあるようです。
linux - 生の 16 ビット x86 マシン コードを逆アセンブルするにはどうすればよいですか?
所有している起動可能な x86 ディスクの MBR (最初の 512 バイト) を逆アセンブルしたいと考えています。を使用してMBRをファイルにコピーしました
ファイルを逆アセンブルできる Linux ユーティリティの提案はありますmbr
か?
assembly - MBR は無効なパーティション テーブルを表示します - しかし、システムは動作します! なぜ?
私は、MBR を読み取ってフロッピーに保存するためのアセンブリ コードを作成するという期末プロジェクトを与えられました。virtualBoxマシンのDOSでINT 13hでなんとか読み取れたと思います。マシンには、XP がインストールされた 1 つのパーティションを持つ 1 つのハード ディスクしかありません。MBR を読み取って印刷すると、大量のジャンクが表示され、ジャンクの中に次のように表示されます: 無効なパーティション テーブル。オペレーティング システムの読み込み中にエラーが発生しました... この Web サイトのように: http://mbr.adamsatoms.com しかし、私のシステムは正常に起動します。MBRを正しく読みましたか。それは本当にMBRですか?なぜこれが起こるのですか?これは、役立つ場合に読むための私のコードの一部です。
前もって感謝します。
x86 - マスター ブート レコードに存在するアセンブリ手順は?
X86 アーキテクチャのマスター ブート レコードを実際に構成する明示的なアセンブリ命令について知りたいです。洞察をありがとう。
他のアーキテクチャも歓迎しますが、これは主に X86 向けです。