IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

" AllocatePoolWithTag ... " ... l'inverse ?


Sujet :

Windows

  1. #1
    Membre habitué Avatar de - Robby -
    Inscrit en
    Juillet 2003
    Messages
    266
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 266
    Points : 170
    Points
    170
    Par défaut " AllocatePoolWithTag ... " ... l'inverse ?
    Bonjour,
    la fonction " ExAllocatePoolWithTag" ... je m'en sers, pas de soucis.
    Le "tag" ... 4 caractères ... ce "tag" devrait pouvoir "identifier" l'allocation mémoire. J'aimerais pouvoir "retrouver" les données d'allocation (adresse et longueur) avec ce "tag" fournit lors de la demande d'allocation. Existerait-il une fonction du style " GetRessourceFromTag ( tag ) " ...
    Merci à tous.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    Salut

    Non...il n'y a pas de fonction GetRessourceFromTag()..

    Tu pourrais nous en dire plus sur ce que tu souhaites faire?

    Le pooltagging n'est actif par défaut que sur 2003, il faut l'activer manuellement via gflags avant 2003
    Seule son activation permet de conserver une "table de tracking" des allocations et de leur tag associé.

    Si tu souhaites débugger ton application, alors tu peux via kd / windbg vérifier la liste des allocations de ton pool.
    Tu as aussi poolmon.exe pour monitorer dynamiquement l'utilisation des pools.

    Si tu souhaites l'implémenter dynamiquement tu peux nous expliquer pourquoi? Tu as un leak?

    Tu peux déjà aller voir
    http://www.microsoft.com/whdc/Driver/tips/PoolMem.mspx
    Nicolas Diétrich

  3. #3
    Membre habitué Avatar de - Robby -
    Inscrit en
    Juillet 2003
    Messages
    266
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 266
    Points : 170
    Points
    170
    Par défaut
    Leak ? ... je ne connais pas ce terme, désolé.
    Oui, je cherche à implémenter dynamiquement.
    Ce que je cherche à faire ?
    J'ai d'un côté mon driver mode kernel, il est actif. De l'autre côté, un processus "a", indépendant de mon driver. Ce processus "a", se trouve en mode kernel également. J'aimerais que ce processus "a", puisse retrouver les paramètres d'allocation mémoire de mon driver ... sans faire "appel" à ce driver. J'ai bien noté que le pooltagging n'est donc pas actif sous XP. Existe-t-il alors un quelconque intérêt à utiliser "ExAllocatePoolWithTag" sous XP ... plutôt que "ExAllocatePool" ? Une fois le pooltagging activé (sous Xp), existe-t-il une possibilité de retrouver l'adresse de cette "table de tracking" ?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    Leak = fuite
    --> Tu as une fuite de mémoire que veux troubleshooter?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Existe-t-il alors un quelconque intérêt à utiliser "ExAllocatePoolWithTag" sous XP ... plutôt que "ExAllocatePool"
    Ben oui, dans des phases de troubleshooting de tes drivers...ça évite bien des recompilations inutiles...
    L'utilisation de tags n'est absolument pas fait pour être traité dynamiquement comme ce que tu veux faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    J'aimerais que ce processus "a", puisse retrouver les paramètres d'allocation mémoire de mon driver ... sans faire "appel" à ce driver
    C'est un spyware / rootkit ça non? Sinon sans être méchant à mon avis revoies ton architecture...tu vas écrouler les perfs et causer plus de BSoD qu'autre chose en voulant implémenter ce genre de choses dynamiquement. Pourquoi un process devrait pouvoir retrouver les allocations faites par quelqu'un d'autre?

    Je te conseille déjà de jouer avec windbg, tu verras comment la table est formée. Il te faudra en plus des symboles pour localiser cette table dynamiquement.
    Basiqueement tu peux la récupérer depuis nt!PoolTrackTable, mais ensuite il faut la parser correctement...



    PoolTrackTable
    Nicolas Diétrich

  5. #5
    Membre habitué Avatar de - Robby -
    Inscrit en
    Juillet 2003
    Messages
    266
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 266
    Points : 170
    Points
    170
    Par défaut
    Pas de malice, aucune ... c'est moi même que je "spy" Rien ne sort de mon pc, c'est juste pour l'amusement, la connaissance du noyau et une passion pour le bas niveau et les drivers. Non, non ... pas trop de bsod ... et pourtant, il s'en passe des choses dans mon pc. Tracer ton code, encore et encore, comprendre le pourquoi du comment de chaque instructions, comprendre les objets utilisés, leurs structures ... aller voir le code généré, step by step, tout vérifier ... c'est le truc. En finalité, pour moi, le plaisir de programmer, c'est tout. Merci pour les infos Ndietrich ... l'utilisation des tags n'est pas fait pour etre implémenté dynamiquement ... ça, c'est une bonne info, je ne savais pas. Nt!PoolTrackTable ... info intéressante également. Je n'utilise pas Windbg, mais un autre kernel debugger. C'est l'outil incontournable. Pas question d'implémenter la moindre instruction en mode noyau sans l'avoir pret et configuré en arrière plan ... indispensable. L'utilité de ma recherche ? comprendre windows . Y'en a qui vont à la pèche, moi, c'est ça

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 25
    Points : 28
    Points
    28
    Par défaut


    Alors ta solution est vraiment le debugging...kd, windbg ou tout autre debugger kernel (et quelques heures libres) te permettront de vérifier tous ces points par toi même
    Poolmon.exe et appverifier sont aussi vraiment utiles avant d'attacher un debugger dans ce genre de cas

    Bonne continuation
    Nicolas Diétrich

  7. #7
    Membre habitué Avatar de - Robby -
    Inscrit en
    Juillet 2003
    Messages
    266
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 266
    Points : 170
    Points
    170
    Par défaut
    Merci Ndietrich.
    Bon développement à toi également.

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo