GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Kann GDB den Assemblercode eines laufenden Programms ändern?

Sie können Binärdateien direkt in den Speicher schreiben, aber GDB hat standardmäßig keinen eingebauten Assembler, Sie können jedoch etwas wie set *(unsigned char*)0x80FFDDEE = 0x90 tun B. um die Mnemonik an dieser Adresse in ein NOP zu ändern. Sie könnten jedoch NASM verwenden, um einen Shellcode zu schreiben, und Perl oder Python verwenden, um ihn in das Programm einzufügen :)

Vielleicht gefällt Ihnen auch diese kleine .gdbinit-Datei, um die Fehlersuche zu vereinfachen:https://gist.github.com/985474


Ich würde einen anderen Ansatz empfehlen:Laden Sie das Coreutils-Paket herunter und ändern Sie den Quellcode für ls . Wenn möglich, sollten Sie das Paket aus den Quellrepositorys Ihrer Distribution beziehen und alle Patches anwenden.


Linux
  1. Wie disassembliere ich eine ausführbare Binärdatei unter Linux, um den Assemblercode zu erhalten?

  2. Wo finde ich den Quellcode des cp-Befehls?

  3. Wie kann ich das Layout der Eingabetastatur in der Konsole ändern?

  4. Kann mprotect() verwendet werden, um die Berechtigungen von .rodata zu ändern?

  5. Kann ich die SID einer Oracle-Datenbank ändern?

Wie ändere ich die Ausgabeumleitung eines laufenden Prozesses?

Wie kann ich C++-Code profilieren, der unter Linux ausgeführt wird?

Welche Teile dieses HelloWorld-Assemblercodes sind wesentlich, wenn ich das Programm in Assembler schreiben würde?

Wie ändere ich die Schriftart der Benutzeroberfläche von Visual Studio Code?

Wie kann ich den absoluten Pfad eines laufenden Prozesses erfahren?

Wie kann ich die IP- und Gateway-Adressen dauerhaft ändern?