OVH Cloud OVH Cloud

fichiers appeles par un programme

9 réponses
Avatar
jmv
bonjour,
est-ce qu'il existe un programme permettant de savoir à partie d'un
executable ELF quels sont les fichiers/scripts appeles par cet executable?
merci d'avance pour vos reponses

9 réponses

Avatar
Basile Starynkevitch [news]
On 2004-09-16, jmv wrote:

est-ce qu'il existe un programme permettant de savoir à partie d'un
executable ELF quels sont les fichiers/scripts appeles par cet
executable? merci d'avance pour vos reponses


En toute généralité, c'est un problème indécidable (car le nom de
fichier peut être dynamiquement construit, et on se ramène à vouloir
décrire l'ensemble des resultats possibles d'une fonction).

En pratique, la commande strings donne de bons résultats, car elle
donne l'ensemble des chaînes constantes d'un fichier ELF (ou même d'un
fichier binaire quelconque).

--
Basile STARYNKEVITCH http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net
aliases: basile<at>tunes<dot>org = bstarynk<at>nerim<dot>net
8, rue de la Faïencerie, 92340 Bourg La Reine, France

Avatar
Nicolas George
"Basile Starynkevitch [news]" wrote in message
:
En pratique, la commande strings donne de bons résultats, car elle
donne l'ensemble des chaînes constantes d'un fichier ELF (ou même d'un
fichier binaire quelconque).


On peut utiliser également la commande strace, avec les bonnes options :

strace -e open,access,stat programme

donne les fichiers ouverts (ou simplement testés) directement ; -f pour
avoir aussi les fichiers ouverts par des processus fils, et ajouter execve à
la liste pour avoir la ligne de commande qui appelle les processus fils.

Avatar
jmv
merci beaucoup à tous les deux pour vos reponses
en utilisant strace j'obtiens des lignes telles que:

open("/dev/usb/scanner0", O_RDWR) = -1 ENODEV (No such device)

or j'ai bien dans /dev/usb une entree scanner0 avec majeur/mineur 180 48
et les permission rw pour tout le monde

est-ce que quelqu'un pourrait m'expliquer?
merci d'avance.
Avatar
Nicolas George
jmv wrote in message <cicrid$5s1$:
merci beaucoup à tous les deux pour vos reponses
en utilisant strace j'obtiens des lignes telles que:

open("/dev/usb/scanner0", O_RDWR) = -1 ENODEV (No such device)

or j'ai bien dans /dev/usb une entree scanner0 avec majeur/mineur 180 48
et les permission rw pour tout le monde

est-ce que quelqu'un pourrait m'expliquer?


C'est simple : si tu n'avais pas eu ce /dev/usb/scanner0, tu aurais eu « -1
ENOENT (No such file or directory) », et si tu n'avais pas eu le droit de
l'ouvrir, « EACCES (Permission denied) ». « ENODEV », ça signifie que le
ficheir existe, est un périphérique, que tu as le droit de l'ouvrir, mais
que le noyau n'a pas de driver pour ce périphérique (et n'en trouve pas en
essayant modprobe).

C'est quel programme, quelle version de ce programme, et quelle version du
noyau ?

Avatar
jmv


C'est quel programme, quelle version de ce programme, et quelle version du
noyau ?


merci,
le programme, c'est scanimage 1.0.13 et le noyau est le 2.6 de la mdk 10.0
en fait, je cherche a faire remarcher mon scanner qui est un epson
perfection 660 (en fait un snapscan agfa), je dis remarcher car il a
fonctionné lors de l'install de la mdk10.0 sans que j'ai besoin de faire
qqchose.
mais l'ayant deplacé sur un autre pc, j'obtiens maintenant
systematiquement le message d'erreur suivant:

erreur d'ouverture du peripherique: libusb:001:002: argument invalide

j'ai cru comprendre que lorsqu'on utilise libusb, il n'y a pas besoin de
charger de module, est-ce que je me suis trompé? si oui, quel module
dois-je charger et ou puis-je le trouver?

Avatar
Nicolas George
jmv wrote in message <cictnp$rta$:
le programme, c'est scanimage 1.0.13 et le noyau est le 2.6 de la mdk 10.0
en fait,


Je ne sais plus exactement à quelle version c'est arrivé, et d'ailleurs je
ne sais pas quelle version utilise mandrake, mais le support des scaners USB
a été retiré du noyau, pour céder la place à un driver totalement userland
(ce qui est bien).

mais l'ayant deplacé sur un autre pc, j'obtiens maintenant
systematiquement le message d'erreur suivant:

erreur d'ouverture du peripherique: libusb:001:002: argument invalide


Le strace a dû te montrer d'autres erreurs d'ouverture, non ? N'est-il pas
question d'un /proc/bus/usb/* quelque part ? Quels sont les droits dans
/proc/bus/usb/* ?

j'ai cru comprendre que lorsqu'on utilise libusb, il n'y a pas besoin de
charger de module, est-ce que je me suis trompé? si oui, quel module
dois-je charger et ou puis-je le trouver?


Oui, c'est bien ça.

Avatar
jmv
bonsoir,

- la derniere ligne du strace precedant l'apparition de la fenetre
d'erreur est :

open("/dev/scanner", O_RDWR|O_NONBLOCK|O_EXCL) = -1 ENODEV (No such device)

ce qui me fait penser que le soft recherche un driver??

- les droits pour /proc/bus/usb/* sont rw pour tout le monde et strace
donne la ligne:

open("/proc/bus/usb/001/002", O_RDWR) = 40

merci pour ton aide.
Avatar
Nicolas George
jmv wrote in message <cifh8g$39p$:
- les droits pour /proc/bus/usb/* sont rw pour tout le monde et strace
donne la ligne:

open("/proc/bus/usb/001/002", O_RDWR) = 40


Alors ça devrait être bon. Il y a probeblement un problème plus subtil, mais
je ne saurais en dire plus. Désolé.

Avatar
jmv


Alors ça devrait être bon. Il y a probeblement un problème plus subtil, mais
je ne saurais en dire plus. Désolé.


tant pis.. merci beaucoup pour ton aide
je pense qu'il faut que je trouve pourquoi libusb ne marche pas :-))