Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1439 connectés 

  FORUM HardWare.fr
  Programmation
  API Win32

  Lancer une application avant qu'un processus ne démarre.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lancer une application avant qu'un processus ne démarre.

n°1857058
SirListene​r
Posté le 03-03-2009 à 12:47:01  profilanswer
 

Bonjour,
 
Je cherche à reproduire le fonctionnement d'un antivirus standard sous windows : intercepter le lancement d'un processus, le mettre en pause, puis executer une application lambda et redémarrer ce processus.  
 
Exple : Lancer la calculatrice windows, une popup demande s'affiche, je clique sur "ok" et la calculatrice se lance.
J'ai regardé du côté des Hooks windows mais -de ce que j'ai compris- ils permettent d'"espionner" mais pas de prendre le contrôle.  
 
Je présume que c'est possible puisque les antivirus le font.  
 
Quelqu'un a une idée ?
 
cdlt,
Guillaume
 
ps : Je veux le faire en Java mais j'imagine que ça fait appel à des fonctions kernel windows, dans cas que passerai par du code JNI. (jé précise "java" parce que, sait-on jamais, il existe peut être un API java qqpart ? Rêvons.)
 

mood
Publicité
Posté le 03-03-2009 à 12:47:01  profilanswer
 

n°1857280
xilebo
noone
Posté le 03-03-2009 à 21:10:15  profilanswer
 

Pour intercepter le lancement d'un processus, cela sous-entend que tu te mets entre le processus père et le processus fils. Sous windows, le processus père est généralement l'explorateur windows (lorsque tu double-cliques sur l'icone de l'application, ou bien en faisant démarrer -> Exécuter), mais peut-être un autre processus comme un service, ou n'importe quel processus proposant d'exécuter une application (gestionnaire de tâches, invite de commande, ou ta propre application).  
 
Tu ne peux donc pas te mettre entres les 2 si l'application père ne l'a pas prévu. (Mal)heureusement, l'explorateur Windows propose cette fonctionnalité (faille rêvée des fabricants de programmes malveillants), en modifiant une ou plusieurs clés de la base de registre, qui te permet d'insérer ton propre programme au démarrage de chaque application. Ainsi chaque application lancée sera en fait non pas démarrée par l'explorateur, mais par ton application, et te donne ainsi un certain contrôle sur chaque application démarrée par l'explorateur.
 
C'est d'ailleurs ce que font les anti-virus.
 

n°1857315
SirListene​r
Posté le 03-03-2009 à 22:49:43  profilanswer
 

Merci ! C'est très bien ça. Peux-tu me donner un lien qui explique comment faire plus précisément ?  
 
Je commençais à abandonner l'idée parce que -contrairement à ta solution- je n'avais trouvé qu'une solution partielle et compliquée dont je ne suis même pas sûr de la faisabilité. Mais, pour information, sur cette page (http://www.codeproject.com/KB/system/hooksys.aspx) on nous explique qu'il est possible de faire charger n'importe quelle dll dynamiquement à un processus en execution avec un système de hook. Du coup, il doit être possible d'appeler l'une des routines de la dll (un équivalent de "wait" par exple) depuis n'importe quel processus en execution.  
 
Un chose tout de même : le programme supercopier intercepte toutes les copies de fichier faites sous windows ... et je ne pense pas que ce soit par ta méthode qu'il inhibe le copier/coller standard sinon il ne pourrait pas fonctionner avec un antivirus... non ?

n°1857322
Mackila
Posté le 03-03-2009 à 23:11:18  profilanswer
 

SirListener a écrit :

Merci ! C'est très bien ça. Peux-tu me donner un lien qui explique comment faire plus précisément ?  
 
Je commençais à abandonner l'idée parce que -contrairement à ta solution- je n'avais trouvé qu'une solution partielle et compliquée dont je ne suis même pas sûr de la faisabilité. Mais, pour information, sur cette page (http://www.codeproject.com/KB/system/hooksys.aspx) on nous explique qu'il est possible de faire charger n'importe quelle dll dynamiquement à un processus en execution avec un système de hook. Du coup, il doit être possible d'appeler l'une des routines de la dll (un équivalent de "wait" par exple) depuis n'importe quel processus en execution.  
 
Un chose tout de même : le programme supercopier intercepte toutes les copies de fichier faites sous windows ... et je ne pense pas que ce soit par ta méthode qu'il inhibe le copier/coller standard sinon il ne pourrait pas fonctionner avec un antivirus... non ?


 
Supercopier fonctionne grace au travail de Mathias Rauen qui a écrit MadCodeHook. MadCodeHook n'est plus distribué en freeware pour cause de cochonneries écrites avec. Voir madshi.net.

n°1857399
Pat333
Posté le 04-03-2009 à 11:42:27  profilanswer
 

xilebo a écrit :

Pour intercepter le lancement d'un processus, cela sous-entend que tu te mets entre le processus père et le processus fils.
....blablabla.....
C'est d'ailleurs ce que font les anti-virus.


 
N'importe quoi.
Les AV comme tout rootkit, font du native api hooking.
Même méthodes 9x/NT depuis 14 ans et la sortie de W95...

n°1857400
Pat333
Posté le 04-03-2009 à 11:44:04  profilanswer
 

Mackila a écrit :


 
Supercopier fonctionne grace au travail de Mathias Rauen qui a écrit MadCodeHook. MadCodeHook n'est plus distribué en freeware pour cause de cochonneries écrites avec.  


 
MadCodeHook est lui-même une cochonnerie car très mal écrit (et très buggé)
Il n'utilise même pas les dernières méthodes officielles MS...
 

n°1857402
SirListene​r
Posté le 04-03-2009 à 11:50:16  profilanswer
 

Mackila a écrit :


 
Supercopier fonctionne grace au travail de Mathias Rauen qui a écrit MadCodeHook. MadCodeHook n'est plus distribué en freeware pour cause de cochonneries écrites avec. Voir madshi.net.


 
Je viens de regarder le site et de faire tourner une ou deux démos c'est plutôt impressionnant, ça a l'air pas mal.  
 
Il y a une démo qui fait un hook sur les intéruptions de processus via task manager : ça popup une boite de dialogue qui te demande si oui ou non il faut autoriser le taskmanager à tuer le processus.  
 
J'imagine qu'il doit être possible de faire la même chose au démarrage d'un processus.  
 
 

Pat333 a écrit :


 
MadCodeHook est lui-même une cochonnerie car très mal écrit (et très buggé)
Il n'utilise même pas les dernières méthodes officielles MS...
 


 
Oui, mais ça a l'air de fonctionner et d'être simple d'utilisation.  
 
tu conseilles quoi sinon ?
tu as des tutos / démos qui utilisent les api win32 directement pour interrompre le démarrage d'un process donné (je ne trouve pas) ?


Message édité par SirListener le 04-03-2009 à 11:50:59
n°1857418
SirListene​r
Posté le 04-03-2009 à 12:34:02  profilanswer
 


 

Citation :


Oui, mais ça a l'air de fonctionner et d'être simple d'utilisation.  
 
tu conseilles quoi sinon ?
tu as des tutos / démos qui utilisent les api win32 directement pour interrompre le démarrage d'un process donné (je ne trouve pas) ?


 
 
Je crois que la réponse se trouve ici :  
 
http://www.developpez.net/forums/d [...] i-windows/
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  API Win32

  Lancer une application avant qu'un processus ne démarre.

 

Sujets relatifs
code pour bloquer le lancement d'une application windevlancer vnc
Mysql ne démarre pas [debian etch ]Problème application client/server, envoie et reception de bytes
application du system de cryptage XOR en cLancer un script VBS dans un fichier HTML
[Novice] Projet d'application sous Myspace - Besoin de vos lumières !Ouverture d'un fichier dans une application swing
[JBoss]Stockage de fichiers ext à l'extérieur d'une application weblancer plusieurs processus après l'explorer
Plus de sujets relatifs à : Lancer une application avant qu'un processus ne démarre.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR