Services.au3 => problème de buffer Overflow

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Zakarian
Niveau 1
Niveau 1
Messages : 4
Enregistré le : ven. 17 févr. 2017 15:25
Status : Hors ligne

Services.au3 => problème de buffer Overflow

#1

Message par Zakarian »

Bonjour à tous!

Pour résumé mon problème , j'ai une application que j'ai développé pour être exécuté en tant que service Windows à l'aide de la bibliothèque services.au3. jusque là tout fonctionnait bien sauf que sur les machines virtuels de mes clients tourne les services de SCCM qui détecte les Buffer Overflow et kill les process qui les provoquent ... et là vous commencez à comprendre mon problème :D

Car effectivement pour une raison encore inconnu (en tous cas par moi !) lorsque j’exécute la commande :

Code : Tout sélectionner

_Service_ReportStatus($SERVICE_RUNNING, $NO_ERROR, 0)


Cela provoque un buffer Overflow détecté par SCCM (et malheureusement pas possible de couper sccm ni d'exclure mon process):
4:43:56.0239090 PM monservice.exe 9468 QueryNameInformationFile C:\Windows\SysWOW64\cfgmgr32.dll BUFFER OVERFLOW
J'ai déjà essayer pas mal de chose directement dans la fonction _Service_ReportStatus et essayer de modifier la valeur du paramètre dwWaitHint mais sans résultat.

Si quelqu'un à une piste je suis preneur !
Et bien sur si je trouve la solution je ne manquerais pas de venir expliquer la soluce!

MErci à tous :)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: Services.au3 => problème de buffer Overflow

#2

Message par jguinch »

Que fait ton code ?
Le problème est peut-être ailleurs.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Zakarian
Niveau 1
Niveau 1
Messages : 4
Enregistré le : ven. 17 févr. 2017 15:25
Status : Hors ligne

Re: Services.au3 => problème de buffer Overflow

#3

Message par Zakarian »

Salut Jguinch.

C'est ce que je me suis dit aussi au début mais le problème c'est qu'a ce moment du code il est en pleine boucle while d'attente.
J'avais donc rallonger le sleep d'attente entre 2 boucle (je suis passé de 1s à 30s) pour éviter qu'il y passe trop souvent et même durant le sleep (ou _sleep, j'ai essayé les 2) il se fait "arrêter".

Je sui quasi sur que cela vient de cette ligne car j'ai essayer de mettre en commentaire la ligne reportstatus et là tous fonctionne bien sauf que je n'ai plus du tous le retour sur mon service dans Windows donc impossible de l’arrêter ou de le lancer à la main et encore moins de le superviser. :/
Zakarian
Niveau 1
Niveau 1
Messages : 4
Enregistré le : ven. 17 févr. 2017 15:25
Status : Hors ligne

Re: Services.au3 => problème de buffer Overflow

#4

Message par Zakarian »

Un petit peu de news sur mon sujet car ça avance!

J'ai modifier le services.au3 que j'avais et j'ai désactivé l'arrêt du service sur _service_ctrl lorsqu'on lui passe un : $SERVICE_ACCEPT_SHUTDOWN

D'ailleurs dans mes tests en activant un max de log je n'ai pas réussi à comprendre pourquoi lafonction de Control du service renvoie que des infos a 0
La fonction _Service_Ctrl($dwControl, $dwEventType, $lpEventData, $lpContext) lorsque sous Windows je demande a mon service de s'arrêter , a part le premier paramètre, tous les autres sont a 0, donc pas évident de trouver ce qui a arrêter mon process.

Si quelqu'un à une idée.
Répondre