GNU/Linux >> Belajar Linux >  >> Linux

Bisakah GDB mengubah kode rakitan dari program yang sedang berjalan?

Anda dapat menulis biner ke memori secara langsung tetapi GDB tidak memiliki assembler bawaan secara default, namun Anda dapat melakukan sesuatu seperti set *(unsigned char*)0x80FFDDEE = 0x90 untuk mengubah mnemonik di alamat itu menjadi NOP misalnya. Namun Anda dapat menggunakan NASM untuk menulis kode shell dan menggunakan perl atau python untuk memasukkannya ke dalam program :)

Anda mungkin juga menyukai file .gdbinit kecil ini untuk mempermudah proses debug:https://Gist.github.com/985474


Saya akan merekomendasikan pendekatan yang berbeda:Unduh paket coreutils dan ubah kode sumber untuk ls . Jika memungkinkan, Anda harus mendapatkan paket dari repositori sumber distro Anda dan menerapkan tambalan apa pun.


Linux
  1. Bagaimana cara membongkar biner yang dapat dieksekusi di Linux untuk mendapatkan kode perakitan?

  2. Dari mana saya dapat menemukan kode sumber perintah cp?

  3. Bisakah ID utas dari proses multithreaded sama dengan ID proses dari proses lain yang sedang berjalan?

  1. Ubah perintah find-grep default di emacs

  2. Bagaimana cara mengubah font UI Visual Studio Code?

  3. Bagaimana saya bisa mengetahui jalur absolut dari proses yang sedang berjalan?

  1. Bagaimana saya bisa mengubah alamat IP dan gateway secara permanen?

  2. Bisakah saya mengubah SID dari database Oracle?

  3. Bisakah saya mengubah nama ekspor NFS