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

GDB は実行中のプログラムのアセンブリ コードを変更できますか?

バイナリをメモリに直接書き込むことができますが、GDB にはデフォルトでアセンブラーが組み込まれていませんが、 set *(unsigned char*)0x80FFDDEE = 0x90 のようなことはできます たとえば、そのアドレスのニーモニックを NOP に変更します。ただし、NASM を使用してシェルコードを記述し、perl または python を使用してそれをプログラムに挿入することもできます:)

この小さな .gdbinit ファイルを使用して、割り当てを簡単にデバッグすることもできます:https://gist.github.com/985474


別のアプローチをお勧めします:coreutils パッケージをダウンロードし、ls のソース コードを変更します。 .可能であれば、ディストリビューションのソース リポジトリからパッケージを取得し、パッチを適用する必要があります。


Linux
  1. 実行中のプロセスの出力リダイレクトを変更するにはどうすればよいですか?

  2. GDB を使用して実行中のプロセスをデバッグできますか?

  3. assert() が失敗した場合、プログラムの終了コードは何ですか?

  1. Linux でバイナリ実行可能ファイルを逆アセンブルしてアセンブリ コードを取得する方法は?

  2. cp コマンドのソース コードはどこから入手できますか?

  3. マルチスレッド プロセスのスレッド ID を、実行中の別のプロセスのプロセス ID と同じにすることはできますか?

  1. emacs のデフォルトの find-grep コマンドを変更する

  2. プログラムをアセンブリで作成する場合、この HelloWorld アセンブリ コードのどの部分が不可欠ですか?

  3. 実行中のプロセスの絶対パスを知るにはどうすればよいですか?