バイナリパッチとはどういう意味ですか?

バイナリパッチとはどういう意味ですか?

マンページの例にあるバイナリをパッチして、これが何を意味するのかを理解しようとしていますxxd

Patch the date in the file xxd.1
% echo "0000037: 3574 68" | xxd -r - xxd.1
% xxd -s 0x36 -l 13 -c 13 xxd.1
0000036: 3235 7468 204d 6179 2031 3939 36  25th May 1996
  1. これはバイナリ編集を意味するのですか、それとも次のようなものですか?ウィキペディア

    パッチは、問題を解決するために設計されたソフトウェアの一部です。1コンピュータプログラムまたはサポートデータを使用または更新します。

  2. xxdとの違いは何でありpatch、どのように似ていますか?
  3. この例では何をしようとしていますか?

答え1

ファイルをパッチすることは、ファイルを修正することを意味し、これは通常、修正がマイナーであることを意味します。この使用法は、パッチが小さい修正(例:布片)の一般的な英語使用法に由来します。ファイルの場合、パッチが常に問題を解決するわけではありません。

パッチは、ファイルまたはファイルセットを変更する方法を説明する一連のガイドラインです。 Unixの世界では、パッチは通常diffテキストファイルの変更を説明するコマンドです。この意味で、パッチはファイルの行を追加、削除、または変更する修正を記述します。このpatchユーティリティは、これらの指示を適用してファイルまたはファイルグループを変更します。ファイルが予想外の状態になったため、最初のパッチが原因で2番目のパッチが適用されない変更が発生する可能性があるため、同じファイルに複数のパッチをインテリジェントに適用しようとします。その操作は行ベースなので、diffバイナリpatchファイルには適していません。

xxdバイナリファイルを操作するための一般的なユーティリティです。その機能の1つはファイルを修正することです。たとえば、このコマンドは、xxd -r - xxd.1標準入力で説明されている修正を適用することを意味します。パッチの例(修正コマンドなど)は、オフセット(10進数55など)から始まり、次の3バイトを0x35、0x74、0x68(3文字など)に置き換えることを0000037: 3574 68意味します。0x375th

答え2

ファイルにパッチを適用すると、そのファイルの一部が更新されたデータで上書きされます。パッチは最後に追加のデータを追加することもできます。すべてのファイルは最終的にバイトストリームなので、テキスト、バイナリなど、あらゆる種類のファイルにパッチを適用できます。

パッチファイルは、扱うべき部分を指定します。

ソフトウェアの修正にアップデートファイルが含まれている場合、パッチはそのファイルをアップデートファイルのフルバージョンと同じように変更できます。パッチはファイル全体ではなく単なる違いなので、パッチはダウンロード時にサイズが小さく、ディスク容量と帯域幅が少なくなります。

16進エディタ(例hexer:)で直接バイナリファイルを編集することを「手動」パッチと呼ぶこともあります。

よくわかりませんが、事前検索してみると生成可能なようですxxdね。xxdダンプあるいは、バイナリデータの16進リストであり、これらのリストを直線バイナリに変換することもできます。したがって、dump hexを使用しxxdvim別のテキストエディタで編集してから、xxd -r「hexdump形式」を使用してecho文字列をパイプすることもできます。xxd(他のオプションを使用すると、バイナリを変更できます。xxd上書きまたはパッチを開始および停止する場所を指定するオプションがたくさんあるようです。)

xxd例の最初のコマンドは、デフォルトでオフセット(「5番目」の場合はASCII)で始まるファイルのバイトを変更するように指示します。 「echo」コマンドが提供する独自の「hexdump」形式を読み取ることができます。xxd.10x00000370x35 0x74 0x68xxdxxd

例の2番目のコマンドは、-c同じオフセット()で始まるファイルの13バイト数をダンプします。

このpatchコマンドは同様の操作を実行しますが、「diff」形式のファイルが必要です。コマンドの出力を保存して、diff2つのファイルを比較し、差分をdiff形式で表現するdiffファイルを作成できます。ページを読むと、manパッチは直接バイナリよりもテキストファイルを変更する方が多いようです。

答え3

マイクロコントローラには、プログラム自体であるプログラムメモリを変更するプログラムがある場合があります。プログラムの実行中に「変形する」と言えます。

これはバイナリアプリケーションの変更の1つの説明にすぎません。

実際、マイクロコントローラプログラムはバイナリパッチを頻繁に使用します。あなたのプログラムは機械コードであり、通常アセンブリにプログラムされているので、組み立てられた機械コードはプログラムされた内容を非常に直接的に表現します。したがって、コードを組み合わせたら、マイクロコントローラのプログラムメモリの一部または全部にパッチを提供するだけです。

関連情報