Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/10/2023, à 14:39

bird12358

Extraction d'info d'une librairie

Hello,

J'ai compilé une librairie en SO .

Je voudrais extraire les fonctions et leurs paramètres. J'ai l'impression que ce n'est pas possible ?

Quand j'utilise la commande readelf, je ne trouve que les fonctions mais pas leur paramètres. Il y a une option au niveau de la compilation qui exporte ces informations?

Hors ligne

#2 Le 23/10/2023, à 19:25

Nuliel

Re : Extraction d'info d'une librairie

Bonjour,
J'imagine que tu veux extraire le nom des fonctions qui sont appelables de l'extérieur et ses paramètres.
En faisant quelques recherches: https://unix.stackexchange.com/question … -libraries et https://stackoverflow.com/questions/155 … n-elf-file
La réponse rapide: on peut mais il faut garder les symboles de debug, avec -g (on peut monter à -g3 mais j'ai jamais eu besoin)
Mais pourquoi veux tu faire cela? Vu que tu as le code, c'est juste copier les prototypes de fonctions exportées.

Un exemple:

#include <stdio.h>
void hello(char *text)
{
    printf("Hello world!\n");
    printf("%s\n", text);
}

je compile avec

gcc -shared -o libhello.so -fPIC hello.c

et on peut voir qu'il n'y a pas les paramètres avec gdb par exemple

pwndbg> p hello
$1 = {<text variable, no debug info>} 0x1119 <hello>

Si on compile avec le -g

gcc -shared -o libhello.so -g -fPIC hello.c

on a

pwndbg> p hello
$1 = {void (char *)} 0x1119 <hello>

Donc -g est suffisant. Par contre comment récupérer les paramètres en dehors de gdb, ça c'est une bonne question.

Edit: j'ai trouvé https://stackoverflow.com/questions/225 … n-elf-file aussi

Dernière modification par Nuliel (Le 23/10/2023, à 19:36)

Hors ligne