|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre éclairé
![]() Miloud Bel.Étudiant Inscription : avril 2005 Messages : 591 ![]() |
Bonsoir,
J'ai une question, je ne veux pas de codes sources mais juste un petit tuiyau pour me mettre dans le bon file Je veux en fait intercépter des appels systèmes spécifiques, je programme en C et je veux ainsi y répondre par la suite. Pour la réponse là j'ai déjà une idée mais ce que je ne sais pas actuellement c'est comment les intércepters avant que celle-ci n'atteignent le noyau. Merci |
|
00
|
|
|
#2 |
![]() ![]() Nicolas ValléeIngénieur Système Inscription : décembre 2005 Messages : 9 774 ![]() |
je vois bien les signaux... mais rien ne dit que tu pourras les inhiber
|
|
|
00
|
|
|
#3 | |
|
Membre éclairé
![]() Miloud Bel.Étudiant Inscription : avril 2005 Messages : 591 ![]() |
Citation:
|
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Inscription : mars 2004 Messages : 1 051 ![]() |
tu as la commande trap si mes souvenirs sont bons pour capturer des signaux.
En revanges, certains signaux comme kill par exemple ne sont pas capturables (et heureusement)
__________________
Chaval __________________ "Monsieur le chat voudriez-vous, s'il vous plait, demanda Alice, me dire de quel côté dois-je aller ? Ca dépend de l'endroit où vous voulez vous rendre, répondit le chat" Lewis Carrol |
|
|
00
|
|
|
#5 |
|
Membre éclairé
![]() Miloud Bel.Étudiant Inscription : avril 2005 Messages : 591 ![]() |
Le kill ne m'interresse pas donc sinon c'est bon, merci je vais me documenter, si vous avez des choses à ajouter n'hésitez pas
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : juin 2004 Messages : 5 850 ![]() |
Bonjour,
On parle de signaux ou d'appels système ![]() En ce qui concerne les appels système, il faut regarder du côté des modules, d'après mes vagues souvenirs tu peux intercepter un appel système grâce à son numéro (défini dans un fichier d'en tête du noyau) et le remplacer par une fonction maison, ne pas oublier de faire appel à l'appel système d'origine si c'est vital (je m'étais amusé avec exec : réinstallation du système garantie )Tu trouvera surement ce que tu cherche dans le kit de survie du developpeur Linux
__________________
gege2061's blog |
|
00
|
|
|
#7 |
|
Membre régulier
![]() Inscription : février 2006 Messages : 86 ![]() |
salut Goundy,
je suppose que tu fais references aux appels systeme de la libc (open(2), close(2), etc..). si c'est le cas, une solution courante et pratique consiste a creer une lib dynamique (un .so sous Linux) dans laquelle tu redefinis les appels systemes qui t'interessent, puis, de jouer avec la variable d'environement LD_PRELOAD afin que ta librairie soit chargee avant les autres (y compris la libc) au moment de l'execution du binaire; de cette facon, les symboles definis dans ta lib "surchargeront" ceux des autres libs (la logique consistant a attribuer une precedance aux symboles charges en premier n'est pas forcement intuitive au premier abord). attention, cette technique ne fonctionne bien sur que sur les binaires linkes en dynamique. je te conseille la lecture des man suivants: ld.so(8) dlopen(3) shematiquement, ta lib doit (dans l'ordre): . dans le _init(), faire un dlopen() de /lib/libc.so.6, puis y recuperer les adresses des fonctions originales via des appels a dlsym(), . declarer et definir les fonctions "surchargees", . chaque fonction surchargee appelera eventuellement la fonction d'origine, dont l'adresse aura ete obtenue lors de la premiere etape (et le cas echeant retournera sa valeur de retour). attention aux petits pieges (un printf() peut avoir comme effet de bord un appel a write(), etc.. donc attention aux eventuels appels recursifs). ensuite, il te suffit de definir LD_PRELOAD avant de lancer le binaire dont tu souhaites detourner les appels systemes. une bonne methode est de faire ca dans un shell a part: (export LD_PRELOAD=./mylib.so; /bin/telnet 127.0.0.1 1234) tu peux trouver de nombreux exemples sur le web en cherchant simplement "LD_PRELOAD" sur Google. |
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() Inscription : novembre 2005 Messages : 58 ![]() |
Advances in Kernel Hacking
1°) http://www.phrack.org/phrack/58/p58-0x06 2°) http://www.phrack.org/phrack/59/p59-0x05.txt Linux on-the-fly kernel patching without LKM http://www.phrack.org/phrack/58/p58-0x07 Toutes ses techniques sont detecter mais c'est deja un bon commencement |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com