GNU/Linux >> Tutoriels Linux >  >> Linux

GDB peut-il modifier le code assembleur d'un programme en cours d'exécution ?

Vous pouvez écrire du binaire directement en mémoire mais GDB n'a pas d'assembleur intégré par défaut, vous pouvez cependant faire quelque chose comme set *(unsigned char*)0x80FFDDEE = 0x90 pour changer le mnémonique à cette adresse en NOP par exemple. Vous pouvez cependant utiliser NASM pour écrire un shellcode et utiliser perl ou python pour l'injecter dans le programme :)

Vous aimerez peut-être aussi ce petit fichier .gdbinit pour faciliter le débogage :https://gist.github.com/985474


Je recommanderais une approche différente :téléchargez le package coreutils et modifiez le code source pour ls . Si possible, vous devez obtenir le package à partir des référentiels source de votre distribution et appliquer les correctifs.


Linux
  1. Puis-je utiliser GDB pour déboguer un processus en cours ?

  2. Quand assert() échoue, quel est le code de sortie du programme ?

  3. D'où puis-je trouver le code source de la commande cp ?

  4. L'ID de thread d'un processus multithread peut-il être le même que l'ID de processus d'un autre processus en cours d'exécution ?

  5. Comment changer la police de l'interface utilisateur de Visual Studio Code ?

Comment changer la redirection de sortie d'un processus en cours d'exécution ?

Comment puis-je profiler du code C++ exécuté sous Linux ?

Comment puis-je exécuter du code PHP à partir de la ligne de commande ?

Changer la commande find-grep par défaut dans emacs

Quelles parties de ce code assembleur HelloWorld sont essentielles si je devais écrire le programme en assembleur ?

Comment puis-je modifier la disposition du clavier d'entrée dans la console ?