GNT sans publicité, site mobile, fonctionnalitées exclusives...

Hacker une commande

Le
Zobinette
Bonjour,

Je suis en plein débogage sur OS X et j'ai besoin de connaitre les paramètres
passés à un programme : /usr/sbin/ncutil

J'ai d'abord pensé à faire un petit script shell nommé /usr/sbin/ncutil qui
log les paramètres et appelle le vrai prog juste après (renommé
/usr/sbin/ncutil.bin).

###
echo "$1" >> /tmp/ncutil.log
/usr/sbin/ncutil.bin $1
###

Malheureusement, ça ne marche pas, ncutil étant appelé par du code objective
C en mode privilégié (j'ai une erreur "Invalid argument").

J'ai donc eu l'idée de remplacer mon script shell par un petit prog en C qui
ferait la meme chose, c'est à dire qui me loguerait argv et qui ferait un
system call du vrai ncutil avec les bons paramètres. Sauf que là je sèche un
peu (le C n'est pas trop mon domaine).

Si quelqu'un pourrait m'aider, ça serait super. Notez que OS X accepte très
bien du posix de base et que je compile avec gcc.
Lire les 20 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 4
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Zobinette
Le #22485531
Ah ben c'est bon, j'ai fini par y arriver :)

#include
int main(int argc, char **argv)
{
int i;
FILE * pFile;
pFile = fopen ("/tmp/ncutil.log","a");

for (i = 0; i < argc; i++)
{
fprintf (pFile, "%s ", argv[i]);
}
fprintf (pFile, "n");
fclose (pFile);

char paf[21] = "/usr/sbin/ncutil.bin";
paf[20] = '';
argv[0] = paf;

return execv(paf, argv);
}
espie
Le #22485641
In article Zobinette
Bonjour,

Je suis en plein débogage sur OS X et j'ai besoin de connaitre les paramètres
passés à un programme : /usr/sbin/ncutil

J'ai d'abord pensé à faire un petit script shell nommé /usr/sbin/ncutil qui
log les paramètres et appelle le vrai prog juste après (renommé
/usr/sbin/ncutil.bin).

###
echo "$1" >> /tmp/ncutil.log
/usr/sbin/ncutil.bin $1
###

Malheureusement, ça ne marche pas, ncutil étant appelé par du code objective
C en mode privilégié (j'ai une erreur "Invalid argument").



Vu tes talents de scripteur, c'est pas tres etonnant....

#! /bin/sh
echo "$@" >>/tmp/ncutil.log
exec /usr/sbin/ncutil.bin "$@"

a deja plus de chance de fonctionner.

Si tu es sur MacOSX, ca a des chances d'etre faisable a coups de dtrace
egalement, sans avoir a rien developper...
Éric Lévénez
Le #22485691
Le 19/08/10 12:45, Marc Espie a écrit :

Vu tes talents de scripteur, c'est pas tres etonnant....

#! /bin/sh
echo "$@">>/tmp/ncutil.log
exec /usr/sbin/ncutil.bin "$@"

a deja plus de chance de fonctionner.

Si tu es sur MacOSX,



Il est sur iOS, car l'OP dit être sur OS X qui est l'ancien nom de iOS.
Mais comme beaucoup confondent OS X et Mac OS X, il y a aussi une
possibilité qu'il soit sur Mac OS X.

ca a des chances d'etre faisable a coups de dtrace
egalement, sans avoir a rien developper...



Ce genre de script ne marche heureusement pas sur unix car les scripts
ne gèrent pas les bits de modification de privilège, contrairement aux
binaires purs.

--
Éric Lévénez -- Unix is not only an OS, it's a way of life.
espie
Le #22485921
In article Éric Lévénez
Ce genre de script ne marche heureusement pas sur unix car les scripts
ne gèrent pas les bits de modification de privilège, contrairement aux
binaires purs.



Euh, non, ca ca depend des Unix. Et essentiellement, ca peut marcher
si le systeme et le "shell" savent lire du script sans passer par son
nom. Globalement, s'il y a support pour /dev/fd/*
Éric Lévénez
Le #22486091
Le 19/08/10 13:41, Marc Espie a écrit :
In article Éric Lévénez
Ce genre de script ne marche heureusement pas sur unix car les scripts
ne gèrent pas les bits de modification de privilège, contrairement aux
binaires purs.



Euh, non, ca ca depend des Unix. Et essentiellement, ca peut marcher
si le systeme et le "shell" savent lire du script sans passer par son
nom. Globalement, s'il y a support pour /dev/fd/*



Mac OS X supporte /dev/fd/*, comme tous les GNU/Linux je pense, mais je
ne vois pas en quoi ce support bouche le trou de sécurité des shells
avec bits s.

--
Éric Lévénez -- Unix is not only an OS, it's a way of life.
Publicité
Suivre les réponses
Poster une réponse
Anonyme