Je peux utiliser call
pour exécuter des fonctions c, mais comment exécuter l'assemblage ou même le code shell directement?Comment exécuter l'assembly directement dans gdb?
Répondre
Pour exécuter du code shell, vous pouvez modifier directement le contenu d'une fonction:
(gdb) b foo
Breakpoint 1 at 0x400608
(gdb) run
Breakpoint 1, 0x0000000000400608 in foo()
(gdb) x/16bx foo
0x400604 <foo>: 0x55 0x48 0x89 0xe5 0x53 0x48 0x81 0xec
(gdb) set ((unsigned char *)foo)[6] = 0x85
(gdb) x/16bx foo
0x400604 <foo>: 0x55 0x48 0x89 0xe5 0x53 0x48 0x85 0xec
(gdb) cont
Je ne sais pas comment exécuter des opcodes à l'intérieur de gdb
, mais vous pouvez certainement faire ce que vous voulez avec des registres. Par exemple, au lieu de mov %rbx, %rax
vous pouvez utiliser set $rax = $rbx
:
(gdb) p $rax
$1 = 3671197290184
(gdb) set $rax = $rbx
(gdb) p $rax
$2 = 0
(gdb)
Je ne pense pas que gdb inclut un assembleur, donc je ne m'attendrais pas à pouvoir entrer directement dans l'assemblage.
Vous pouvez utiliser la shell
commande gdb pour exécuter des commandes shell:
(gdb) shell uname -m
x86_64
Mais c nous pouvons intégrer assebmly directement, non? Ici, je veux dire des choses comme '\ x23 \ x24 ...' par le code de shell – compiler
par "shellcode", compilateur signifiait un type spécifique de [code binaire] (http://en.wikipedia.org/wiki/Shellcode) exécuté par le CPU. –
- 1. Comment exécuter les instructions précédentes dans GDB?
- 2. Comment appeler l'assembly dans gdb?
- 3. exécuter un plan d'exécution directement dans PostgreSQL
- 4. Comment exécuter le fichier php directement dans le navigateur
- 5. Comment exécuter une chaîne SQL directement dans ASP.NET MVC 2?
- 6. Exécuter Java-applets directement (sans page html)
- 7. Comment exécuter un exécutable Dalvik avec GDB sur Android?
- 8. Exécuter JSP directement à partir de Java
- 9. comment attacher un processus fils dans gdb?
- 10. Exécuter le script directement dans 2 différents navigateurs
- 11. Exécuter une commande shell directement dans un bac à sable
- 12. Comment définir rsp dans gdb?
- 13. Comment utiliser gdb avec LD_PRELOAD
- 14. Comment écrire directement dans la console?
- 15. Dans GDB, comment exécuter une commande automatiquement lorsque le programme s'arrête? (comme affichage)
- 16. Comment puis-je exécuter un programme avec des drapeaux supplémentaires dans gdb?
- 17. Comment faire gdb exécuter une fonction définie par l'utilisateur (définie dans .gdbinit) à chaque démarrage?
- 18. Comment faire pour exécuter le script gdb dans eclipse quand il joint?
- 19. Exécuter JavaScript local directement sur la page Web
- 20. Impression de l'instruction en cours dans GDB
- 21. affichage conditionnel dans gdb
- 22. Comment fonctionne gdb?
- 23. Surmonter dans Emacs GDB
- 24. Exécuter la règle directement (contourner les règles + workflow)
- 25. Comment lancer gdb avec -quiet dans xcode
- 26. Comment enregistrer les paramètres dans gdb?
- 27. Comment attacher un processus dans gdb
- 28. Comment imprimer un tableau Java dans gdb?
- 29. Comment sauvegarder l'état de débogage dans gdb?
- 30. Comment imprimer en mode binaire dans gdb?
Quelle est la différence entre 'let' et' set'? – compiler
Désolé, c'est une faute de frappe, c'est supposé lire 'set'. Je vais réparer le post. –
Existe-t-il un environnement de type python pour le code d'assemblage? –