GNU/Linux >> Linux の 問題 >  >> Linux

Ddでバイナリにパッチを適用しますか?

私はこの引用(下記)を数回読んだことがありますが、最近ではここで、ddがどのようになっているのか常に戸惑っています。 すべてにパッチを適用するために使用できます コンパイラは言うまでもなく:

30年前に私が学校で使用したUnixシステムは、RAMとディスク容量が非常に限られていました。特に、/usr/tmp ファイルシステムが非常に小さかったため、誰かが大きなプログラムをコンパイルしようとすると問題が発生しました。もちろん、学生はとにかく「大規模なプログラム」を書くことは想定されていませんでした。大規模なプログラムは通常、「どこか」からコピーされたソースコードでした。私たちの多くは/usr/bin/ccをコピーしました /home/<myname>/ccへ 、および使用されたdd /tmpを使用するようにバイナリにパッチを適用します /usr/tmpの代わりに 、大きかった。もちろん、これは問題をさらに悪化させました。これらのコピーが占めるディスク容量は、当時は重要でしたが、現在は/tmp 定期的にいっぱいになり、他のユーザーが自分のファイルを編集することさえできなくなります。彼らが何が起こったのかを知った後、システム管理者はchmod go-r /bin/* /usr/bin/*を実行しました これで問題が「修正」され、Cコンパイラのすべてのコピーが削除されました。

(エンファシスマイン)

dd マニュアルページにはパッチの適用については何も書かれておらず、とにかくこれを行うために再利用できるとは思わない。

バイナリは本当にddでパッチを当てることができますか ?これには歴史的な意味がありますか?

承認された回答:

試してみよう。ささいなCプログラムは次のとおりです。

#include <stdio.h>
int main(int argc, char **argv) {
    puts("/usr/tmp");
}

これをtestに組み込みます :

$ cc -o test test.c

実行すると、「/ usr/tmp」と出力されます。

/usr/tmp 」はバイナリにあります:

$ strings -t d test | grep /usr/tmp
1460 /usr/tmp

-t d 見つかった各文字列のファイルに10進数のオフセットを出力します。

それでは、「/tmp」だけで一時ファイルを作成しましょう。

Linux
  1. Notify-Send With Cronを使用していますか?

  2. FTPを使用してASCIIまたはバイナリとしてファイルをアップロードする

  3. -static でコンパイルされたバイナリかどうかを確認する

  1. trace-cmdを使用したカーネルトレース

  2. 16 進文字列をバイナリに変換し、netcat で送信します

  3. noexec オプションを使用してファイル システムで bash スクリプトまたは c バイナリを実行する

  1. LVMを使用してLinuxをインストールする

  2. 例を含むNohupコマンド

  3. LinuxでのJQコマンドと例