Du coup, j'ai trouvé cela
https://systemoverlord.com/2017/03/19/got-and-plt-for-pwning.html
qui répond partiellement à mes questions.
Le mer. 26 oct. 2022 à 14:50, Patrice Karatchentzeff
<patrice.karatchentzeff@???> a écrit :
>
> J'ai dit une ânerie : la fonction main correspond à la section .plt.
>
> PK
>
> Le mer. 26 oct. 2022 à 14:44, Patrice Karatchentzeff
> <patrice.karatchentzeff@???> a écrit :
> >
> > Salut,
> >
> > Quand gcc compile un programme en C, il semble qu'il garde le nom de
> > main du C pour l'assembleur.
> >
> > Soyons follement original :
> >
> > #include <stdio.h>
> >
> > int main(void) {
> > printf("Hello, world!\n");
> > return 0;
> > }
> >
> > donne *en assembleur* (gcc -s) :
> >
> > (...)
> > .text
> > LC0:
> > .ascii "Hello, world!\12\0"
> > .globl _main
> > .def _main; .scl 2; .type 32; .endef
> > _main:
> > pushl %ebp
> > movl %esp, %ebp
> > etc.
> >
> > Donc au début du programme, le main est bien référencé en _main.
> >
> > Dont acte.
> >
> > Pourtant, si je compile et que je désassemble le binaire compilé, je
> > ne retrouve pas cette fonction. Au mieux, j'ai un .init dedans qui
> > semble être la même chose.
> >
> > J'ai fait un grep dans toutes les gnuteries de mon système et c'est pareil.
> >
> > Alors, j'ai deux questions :
> >
> > * main = .init ?
> > * est-ce une règle ? Je ne trouve rien sur le net à ce sujet...
> >
> > Merci de vos lumières,
> >
> > PK
> >
> >
> > --
> > |\ _,,,---,,_ Patrice KARATCHENTZEFF
> > ZZZzz /,`.-'`' -. ;-;;,_ mailto:patrice.karatchentzeff@gmail.com
> > |,4- ) )-,_. ,\ ( `'-'
> > '---''(_/--' `-'\_)
>
>
>
> --
> |\ _,,,---,,_ Patrice KARATCHENTZEFF
> ZZZzz /,`.-'`' -. ;-;;,_ mailto:patrice.karatchentzeff@gmail.com
> |,4- ) )-,_. ,\ ( `'-'
> '---''(_/--' `-'\_)
--
|\ _,,,---,,_ Patrice KARATCHENTZEFF
ZZZzz /,`.-'`' -. ;-;;,_ mailto:patrice.karatchentzeff@gmail.com
|,4- ) )-,_. ,\ ( `'-'
'---''(_/--' `-'\_)