J'utilise l'utilitaire readelf pour vérifier (-h) un fichier exécutable, et je vois que le champ e_entry a la valeur: 0x8048530. Ensuite, je recompile le programme vérifié et l'ai pour imprimer sa propre entrée de programme en ajoutant la ligne: printf ("% p \ n", (void *) main) et sorties: 0x80485e4. Pourquoi ai-je cette différence? (OS: Linux 32 bits)Champ d'entrée ELF et entrée de programme réelle
1
A
Répondre
3
Le point d'entrée d'un exécutable est généralement pas main
lui-même, mais une plate-forme fonction spécifique (que nous appellerons _start
) qui effectue l'initialisation avant d'appeler main
.
1
Répondre à la question "peut accéder à i l'étiquette _start du corps principal?":
#include <stdio.h>
int main()
{
void* res;
#if defined(__i386__)
asm("movl _start, %%eax" : "=a" (res));
#elif defined(__x86_64__)
asm("movq _start, %%rax" : "=a" (res));
#else
#error Unsupported architecture
#endif
printf("%p\n", res);
return 0;
}
Questions connexes
- 1. sections programme fichier ELF TLS et CHARGE
- 2. objdump ELF et Windows
- 3. Définir l'attribut de valeur réelle d'une entrée avec jQuery
- 4. Taille réelle du champ TEXT (MySQL)
- 5. Recherche de l'arborescence des appels d'exécution réelle d'un programme Java
- 6. Stack, Frame, Global Pointer et fichiers ELF
- 7. ELF fichier à la main
- 8. accès inférieur et supérieur 4 bits dans le champ de type et de liaison dans le symbole elf
- 9. réelle chaîne d'échappement et PDO
- 10. Modification du fichier elf
- 11. jQuery Entrée et validation filigranées
- 12. Entrée brute et impression simultanée
- 13. Ajouter une section au fichier ELF
- 14. Comment interdire les caractères spéciaux dans une entrée de champ?
- 15. entrée de blocage bureau jquery et textarea
- 16. Chargeur ELF de l'espace utilisateur Linux
- 17. Auto-identification d'entrée de programme
- 18. Modélisation plus complexe (réelle)?
- 19. Relocalisation ELF au moment du chargement
- 20. Lire l'entrée GOT dans Elf Binary
- 21. -entrée utilisateur et ESS
- 22. et entrée combobox texte
- 23. float entrée à textfield et textarea java
- 24. Le champ SharePoint n'est pas requis mais nécessite une entrée.
- 25. Comment utiliser un champ d'index pour supprimer une entrée?
- 26. script BASH passant entrée stdin à un programme et de donner le contrôle à l'entrée d'utilisateur
- 27. Exécuter un programme externe à l'aide de ProcessBuilder et fournir une entrée
- 28. jQuery trouver la dernière entrée et ajouter
- 29. Java - entrée prénom prénom et nom?
- 30. Rails - 1 entrée dans le modèle par champ, par jour
peut accéder à i l'étiquette _start du corps principal? –