Précédent   Forum du club des développeurs et IT Pro > Général Développement > Programmation système > Linux
Linux Forum d'entraide sur la programmation Linux : shell, système, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 24/05/2007, 13h49   #1
ballrog64
Invité de passage
 
Inscription : mai 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 6
Points : 0
Points : 0
Par défaut graphe d'appel d'un programme

Bonjour,


Je cherche à créer un "mappage" de programmes écrits dans divers langages spécialement C et C++ afin de mieux les comprendre et pour des applications de sécurité (extraction de politique de sécurité entre autre).

Le but serait d'avoir un graphe d'appels des fonctions du programme et à l'intérieur de ces fonctions la liste des appels systèmes.

J'aimerais savoir si vous connaissez des outils qui permettent de faire ce "mapping", soit des fonctions soit des appels système soit des deux.


Merci de votre aide.
ballrog64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 14h03   #2
gandalfar
En attente de confirmation mail
 
Avatar de gandalfar
 
Inscription : novembre 2004
Messages : 145
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 145
Points : 114
Points : 114
Envoyer un message via MSN à gandalfar
Renseigne toi sur le format des binaire elf32(celui utilisé par la pluspart des unix) et tu verra qu'en poussant le truc tu peux tracer toutes les libs dynamiques chargées les fonctions appelée, les syscalls utilisés par un binaire, recuperer ta string table etc...

Sinon il doit exister quelque binaires qui travaillent sur elf genre strace qui trace les syscalls ou strings qui te sort la string table de ton binaire.
gandalfar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 22h31   #3
ballrog64
Invité de passage
 
Inscription : mai 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 6
Points : 0
Points : 0
Par défaut merci pour la réponse rapide

Bonsoir,


Merci pour la piste de recherche, je suis tombé sur pas mal de choses intéressantes dans mes recherches.

Je voulais maintenant savoir si vous connaissez une alternative à DTrace sur linux car celà me semble être un très bon outil mais il marche uniquement sous Solaris.

Je me suis penché sur les fichiers elf32 mais outre le peu de documentation, les outils permettant un mappage de binaires de programmes est assez restreint d'après ce que j'ai pu voir.

L'analyse statique du code source semble offrir plus d'alternatives.

www.haypocalc.com/wiki/Analyse_statique_de_code

Je suis aussi tombé sur Systrace: http://www.citi.umich.edu/u/provos/systrace/

qui permet de créer des politiques de sécurité mais n'offre pas la possibilité de faire de mapping du code source.

Est ce que vous connaissez de tels outils qui me permettrait de construire un graphe des fonctions et/ou appels système d'un programme (binaire ou code source) écrit par exemple en C ou C++?

Meci encore pour votre aide.
ballrog64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2007, 00h23   #4
gandalfar
En attente de confirmation mail
 
Avatar de gandalfar
 
Inscription : novembre 2004
Messages : 145
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 145
Points : 114
Points : 114
Envoyer un message via MSN à gandalfar
Citation:
Envoyé par ballrog64
Est ce que vous connaissez de tels outils qui me permettrait de construire un graphe des fonctions et/ou appels système d'un programme (binaire ou code source) écrit par exemple en C ou C++?
pas a ma conaisssance, mais il y a la methode barbu ou si le binaire existe
pas tu le code

Citation:
Envoyé par ballrog64
Je me suis penché sur les fichiers elf32 mais outre le peu de documentation, les outils permettant un mappage de binaires de programmes est assez restreint d'après ce que j'ai pu voir.
au niveau de la doc elf j ai deja bossé avec celle la :
http://www.google.com/url?sa=t&ct=re...lbXo6GmxAjH-8w

Pour le mappage du binaire tu le map dans du C a l aide du syscall mmap et
pour la création de graphe tu utilise une des nombreuse lib qui te fait un jolie
dessin apres lui avoir file ton graphe contenant tes données et hop l affaire
est reglé.
gandalfar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2007, 01h25   #5
ballrog64
Invité de passage
 
Inscription : mai 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 6
Points : 0
Points : 0
Par défaut suite

Sympa d'avoir du suivi sur le sujet

Merci pour la documentation sur Elf elle a l'air très complète.

Je rajoute quelques liens intéressants (en anglais par contre ) sur lesquels je suis tombé:

***outils pour comprendre un programme:
http://www.softpanorama.org/SE/progr...standing.shtml

***une usine à gaz qui a l'air de tout faire mais qui n'a pas l'air abordable pour le pauvre petit étudiant
http://www.grammatech.com/products/c...reenshots.html

***sur les générations de graphes:
http://www.thescripts.com/forum/thread215718.html


Citation:
pas a ma conaisssance, mais il y a la methode barbu ou si le binaire existe
pas tu le code
...je crois que ça va finir par être le cas...

Citation:
pour la création de graphe tu utilise une des nombreuse lib qui te fait un jolie
dessin apres lui avoir file ton graphe contenant tes données et hop l affaire
est reglé.
Par contre comme je suis pas spécialiste en la matière si vous pouvez m'apporter quelques précisions sur le sujet; je finirais sans doute par trouver après quelques recherches, mais si vous pensez à quelque chose de spécifique ça pourrait m'orienter un peu et me faire gagner du temps


Merci d'avance.
ballrog64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2007, 10h20   #6
fearyourself
Rédacteur/Modérateur
 
Avatar de fearyourself
 
Homme
Ingénieur Informaticien Senior
Inscription : décembre 2005
Messages : 5 001
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur Informaticien Senior
Secteur : Industrie

Informations forums :
Inscription : décembre 2005
Messages : 5 001
Points : 10 736
Points : 10 736
Citation:
Envoyé par ballrog64
Merci pour la documentation sur Elf elle a l'air très complète.
Mauvaise idée à mon avis :

- Le format ELF donne les informations contenus dans le fichier, on peut y trouver les noms des fonctions par exemples

Mais ceci n'est pas obligatoire. En effet, c'est une option et la table des symboles peut être virée de l'exécutable. Donc ton programme ne tournera pas sur tous les programmes.

- Ensuite, partir sur ce chemin veut dire que tu vas vouloir écrire un parser de code: à part si t'as déjà fait, si l'architecture que tu vises est simple (et encore, chaque système a ses problèmes, ca ou tu as beaucoup de temps, très peu de documentation et beaucoup de codage seront nécessaires pour arriver à quelque chose de potable (je parle en connaissance de cause d'ailleurs).

Citation:
Par contre comme je suis pas spécialiste en la matière si vous pouvez m'apporter quelques précisions sur le sujet; je finirais sans doute par trouver après quelques recherches, mais si vous pensez à quelque chose de spécifique ça pourrait m'orienter un peu et me faire gagner du temps
- Le programme dot existe dans le paquet graphviz qui permet de faire des choses bien sympatiques.

- aiSee existe et est gratuit si tu ne veux pas l'utiliser à des fins commerciaux.

Jc
fearyourself est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/05/2007, 15h16   #7
ballrog64
Invité de passage
 
Inscription : mai 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 6
Points : 0
Points : 0
Par défaut précisions

Bonjour à tous ,

J'ai fait quelques avancées concernant l'analyse de code source notamment avec cflow:
http://www.gnu.org/software/cflow/
Mais celà reste de l'analyse statique de code (limité au C en plus).

Existe-t-il un moyen d'obtenir le graphe d'appel des fonctions à partir du binaire et non pas du code source?
De plus est-il possible de le faire statiquement ou doit-on faire appel de manière dynamique en lançant d'abord le programme?
Strace, par exemple, liste les appels systèmes du programme. Mais il faut bien dire que la sortie est quelque peu inbuvable

J'aimerais trouver s'il existe une représentation sous forme de graphe de la sortie de strace. Sinon avez vous une idée de la manière dont on pourrait extraire une représentation graphique de sa sortie?

Cà fait beaucoup de question en une seule fois...
Mais c'est comme ça qu'on avance

Merci encore pour toute votre aide.
ballrog64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2012, 17h39   #8
yves_mag
Invité de passage
 
Homme
Ingénieur développement logiciels
Inscription : octobre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2011
Messages : 2
Points : 2
Points : 2
Par défaut mon programme fait ça...

J'ai fabriqué un soft pour faire ça:
http://yves.maguer.free.fr/callgraf/graf_appel.html

mon soft prend en entrée:
- soit une matrice en mode texte (format csv),
- soit la sortie "graphe d'appel" d'eclipse (call hierarchy).

eclipse comprend beaucoup de langages (C, C++, PHP, java, etc...).
yves_mag est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h13.


 
 
 
 
Partenaires

Hébergement Web