x86 saut à une adresse
Comme une mission pour une sécurité de classe, je suis en train d'utiliser __asm__("jmp 0xbffff994");
dans mon code, mais quand je l'ai démonter des choses dans gdb, l'instruction est changé à jmp 0xc8047e2a
.
Aucune idée de pourquoi et comment puis-je accéder à une adresse particulière?
- Pourquoi diable avez-vous besoin pour passer à une crue de l'adresse? Je vais avoir du mal à comprendre tout possible (non infâme) l'utilisation que.
- Quel système utilisez-vous?
- peu importe, sa question a été posée, nous allons essayer d'y répondre.
Vous devez vous connecter pour publier un commentaire.
Probablement parce que c'est un saut à une adresse relative, et l'éditeur de liens ou du chargeur a déplacé votre code. Essayez de mettre l'adresse dans une variable, puis faire:
ou alternativement:
Daniel Explique pourquoi votre saut n'est pas le même que vous avez programmée. Il a à voir avec les fichiers objets et de liaison.
si vous souhaitez accéder à une adresse particulière, il est préférable de patch le saut à l'aide d'un Débogueur ou Désassembleur.
Il est difficile de déterminer l'adresse exacte sur le temps de compilation, avez-vous essayé d'utiliser des étiquettes? Il est beaucoup plus fréquent pour les utiliser avec jmp.
exemple:
Je vous conseille d'utiliser un éditeur hexadécimal et il suffit de changer la valeur, si c'est juste une chose.
Sur mon système (gcc version 4.2.4, Ubuntu), c'est bien sur le disassmbley (insight):
résultats de la disassmbley (insight):