Comment coder un execve en appel système
Fermé
alex6943
Messages postés
2
Date d'inscription
vendredi 16 janvier 2009
Statut
Membre
Dernière intervention
28 janvier 2009
-
16 janv. 2009 à 12:50
kilian Messages postés 8732 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 5 février 2025 - 28 janv. 2009 à 17:55
kilian Messages postés 8732 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 5 février 2025 - 28 janv. 2009 à 17:55
A voir également:
- Comment coder un execve en appel système
- Restauration systeme windows 10 - Guide
- Appel inconnu - Guide
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Application pour apprendre à coder - Guide
2 réponses
0x0syscall
Messages postés
85
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
30 juin 2009
5
28 janv. 2009 à 13:52
28 janv. 2009 à 13:52
Dans ton projet tu peux le coder en asm x86 ?
Si c'est le cas.
regarde quelque exemple sur ce site http://pollydevstorm.zapto.org/asm/index.html
Si c'est le cas.
regarde quelque exemple sur ce site http://pollydevstorm.zapto.org/asm/index.html
kilian
Messages postés
8732
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
5 février 2025
1 526
28 janv. 2009 à 14:36
28 janv. 2009 à 14:36
do_execve/sys_execve sont des fonctions du kernel. Tu n'es pas sensé pouvoir y accéder, à moins que tu sois en train de coder au niveau du noyau?
En fait quand tu appelles la fonction execve côté utilisateur, tu va basculer en mode kernel (interruption appel système) puis le kernel va executer sys_execve() qui va lui même appeller do_execve() etc....
Mais côté utilisateur, ce dont tu as besoin c'est d'execve(), par contre si tu es dans le noyau (Linux) et que tu veux executer un programme utilisateur alors il faut passer par d'autres solutions tel que khelper en utilisant la fonction
call_usermodehelper()
En fait quand tu appelles la fonction execve côté utilisateur, tu va basculer en mode kernel (interruption appel système) puis le kernel va executer sys_execve() qui va lui même appeller do_execve() etc....
Mais côté utilisateur, ce dont tu as besoin c'est d'execve(), par contre si tu es dans le noyau (Linux) et que tu veux executer un programme utilisateur alors il faut passer par d'autres solutions tel que khelper en utilisant la fonction
call_usermodehelper()
kilian
Messages postés
8732
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
5 février 2025
1 526
28 janv. 2009 à 14:44
28 janv. 2009 à 14:44
Et de manière générique, pour faire un appel système côté utilisateur, il y a la fonction syscall:
https://linux.die.net/man/2/syscall
https://linux.die.net/man/2/syscall
alex6943
Messages postés
2
Date d'inscription
vendredi 16 janvier 2009
Statut
Membre
Dernière intervention
28 janvier 2009
>
kilian
Messages postés
8732
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
5 février 2025
28 janv. 2009 à 17:46
28 janv. 2009 à 17:46
Merci, c'était call_usermodehelper qu'il me fallait.
Le but du jeu était d'implémenter un system call (au niveau du noyau), qui lançait un executable côté utilisareur.
Le but du jeu était d'implémenter un system call (au niveau du noyau), qui lançait un executable côté utilisareur.
kilian
Messages postés
8732
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
5 février 2025
1 526
>
alex6943
Messages postés
2
Date d'inscription
vendredi 16 janvier 2009
Statut
Membre
Dernière intervention
28 janvier 2009
28 janv. 2009 à 17:55
28 janv. 2009 à 17:55
Ok, j'espère que tu utilises un noyau 2.6 parce que je ne sais pas si ça existe dans le 2.4 (comme ta config dit que tu as un 2.4).
Tu trouveras quelques détails sur cette fonction dans le repertoire des sources du noyau:
include/linux/kmod.h
Et l'idéal est de faire un grep pour trouver des fichiers qui l'utilisent.
Tu trouveras quelques détails sur cette fonction dans le repertoire des sources du noyau:
include/linux/kmod.h
Et l'idéal est de faire un grep pour trouver des fichiers qui l'utilisent.