begin process at 2012 05 29 09:04:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Systeme

 > 

Hook incompatible avec service windows ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Hook incompatible avec service windows ?

mardi 2 mai 2006 à 21:35:28 | Hook incompatible avec service windows ?

HeavenForsaker

J'ai codé un hook qui fonctionne quand on lance la fonction SetWindowsHookEx() depuis un exécutable (l'exécutable charge la DLL par la suite). Ensuite j'ai essayé de lancer ce hook avec un exécutable mais cette fois en tant que service windows et la ça se lance correctement, j'ai testé en debuggage la fonction de hook est belle et bien exécutée sans erreur mais le hook n'a aucun effet.

La question est la suivante, peut on lancer un hook à partir d'un service windows ?

Parce que je veux juste faire un launcher(lancer mon hook) au démarrage du service, c'est le seul traitement à effectuer. Et désactiver le hook en arrêtant le service biensur.
Pour info je lance mon hook à la fin de la fonction ServiceMain() :

//------------------------------------------------------------------------------------
    //On signal au SCM que le service est démarré.
    MyServiceStatus.dwCurrentState       = SERVICE_RUNNING;
    MyServiceStatus.dwCheckPoint         = 0;
    MyServiceStatus.dwWaitHint           = 0;

    /*On transmet au SCM le status actuel du service,
    à chaque changement de status il faut renvoyer la structure SERVICE_STATUS au SCM.*/
    SetServiceStatus(MyServiceStatusHandle, &MyServiceStatus);

    //Placer ici le code que le service doit exécuter.
    //C'est ici que je lance mon hook.
    StartHook();

    return;
//------------------------------------------------------------------------------------

Voila merci d'avance
mercredi 3 mai 2006 à 13:10:55 | Re : Hook incompatible avec service windows ?

HeavenForsaker

BRUNEWS, ARNOTIC !!!! A L'AIDEEEEEEEEEEEE !
mercredi 3 mai 2006 à 14:19:08 | Re : Hook incompatible avec service windows ?

BruNews

Administrateur CodeS-SourceS
Désolé mais en ce moment, j'hésite à entrer dans un topic si je le sens un peu long, j'ai très peu de temps dispo.

Un hook est associé à un desktop, faut donc une synchro pour vérifier qu'un user est loggé et que ton service soit interactif avec le desktop.
Le plus simple est d'inscrire ton prog (non service) dans HKLM\....\run, il sera ainsi lancé pour chaque user.

ciao...
BruNews, MVP VC++
mercredi 3 mai 2006 à 14:59:51 | Re : Hook incompatible avec service windows ?

HeavenForsaker

Ok, merci BruNews d'avoir pris le temps de répondre,

ben pour l'interaction avec le bureau il suffit de rajouter SERVICE_INTERACTIVE_PROCESS à la fonction CreateService() ?
parce que j'ai essayé et ça ne fonctionne toujours pas :

hService = CreateService(hSCManager, szServiceName, szServiceName, SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS | SERVICE_INTERACTIVE_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_IGNORE, szBinaryPathName, 0, 0, 0, 0, 0);

Ok si j'ai bien compris, il faudrai que je lance mon hook après que l'utilisateur se soit loggé, et le hook ne fonctionnera que sur la session de cet utilisateur. La je suis un peu perplex parce que justement j'ai testé en lançant mon service non pas au démarrage mais manuellement durant ma session et ça n'a toujours pas fonctionné.

Sinon au départ j'avais mis mon prog au démarrage, comme tu dit dans la BDR,  mais j'ai envie qu'il puisse être arrêté facilement sans passer par les lignes de commande, c'est pour ça que j'ai voulu le passer en services windows.

En tout cas merci encore.
jeudi 4 mai 2006 à 11:03:36 | Re : Hook incompatible avec service windows ?

BruNews

Administrateur CodeS-SourceS
Je reste persuadé que ton service n'est pas attaché à un desktop, le thread de ton service lançant SetWindowsKookEx doit l'être par force.
Regarde SetThreadDesktop() dans MSDN.

ciao...
BruNews, MVP VC++
jeudi 4 mai 2006 à 13:30:36 | Re : Hook incompatible avec service windows ?

HeavenForsaker

Ok, ta surement raison man, j'ai fait 2-3 tests la dans ma fonction ServiceMain() qui lance le hook :

HDESK hDesk = GetThreadDesktop(GetCurrentThreadId());
Pour récuperer le handle du desktop associé au thread du service qui lance mon hook, et il me renvoi un handle qui ne correspond pas à mon bureau actuel !

J'ai donc essayé de changer tout ça :

HDESK hDesk = (HDESK)GetDesktopWindow();
BOOL bRes = SetThreadDesktop(hDesk);
bRes me renvoi ERROR_INVALID_HANDLE alors que hDesk contient bien le handle de mon bureau actuel.

De toute façon ça commence a me saouler ce truc la je crois que je vais abandonner l'idée du service et retourner à la solution de départ...

Merci encore BruNews



Cette discussion est classée dans : windows, service, lance, hook, myservicestatus


Répondre à ce message

Sujets en rapport avec ce message

Lancer une appli par un service windows [ par jayjay9531 ] Bonjour,J'ai un petit problème avec le service windows que j'ai créé. Il fonctionne bien mais j'ai besoin qu'il lance une applcation, j'utilise :#incl SetWindowsHookEx avec programme service [ par Taron31 ] Bonjour, j'ai une question concernant le fonction SetWindowsHookEx. En effet un ami à moi l'utilise dans son programme pour faire un hook d'inactivité c++ Manipuler les services windows [ par PriMe2302 ] Bonjour, Je voudrais stopper et désactiver des services en c++ j'ai utiliser ce code : System::ServiceProcess::ServiceController^ serviceControll question sur service windows [ par deck_bsd ] Bonjour/bonsoir à tous,Voila une petite question qui à mon avis n'en est pas une :DVoila en faite je crée un service et pour cela j'ai créer un projet Service Windows [ par Ombitious_Developper ] Salut :Comment peut-on créer un service WINDOWS en C/C++?Je veux créer un programme qui s'exécute en arrière plan.Et Merci ... démarrage automatique d'un service windows [ par boutonk ] Bonjour,J'ai développé un service windows en c++ sous .Net et j'aimerais trouvé une solution pour que ce service fonctionne seulement lors de plage ho Keylogger en tant que service windows ? [ par HeavenForsaker ] Bonjour,Pour programmer un keylogger qui pompe le moins de ressources possible et qui se fait le plus discret possible est ce une bonne idée de le met Détourner la copie de windows par un hook [ par alphaone ] Bonjour, je sais qu'il est possible de détourner la copie de windows pour copier avec sont logiciel et non pas avec la copie de windows, mais je suis


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales