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 :

changer l'imagelist d'une SyslistView32 d'un autre process


Sujet :

Windows

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 62
    Points : 40
    Points
    40
    Par défaut changer l'imagelist d'une SyslistView32 d'un autre process
    Bonjour!

    Je cherche comment modifier une imagelist d'un autre process, le but est de changer les icônes affichées. j'ai pu récupérer la fenêtre avec findwindow(), et j'ai essayé d'allouer un espace dans la mémoire avec virtualallocEx et écrire dans le process la nouvelle imagelist avec writeprocessmemory puis sendmessage(hwnd,SetImageList,0,himagelist)
    mais cela ne fonctionne pas malheuresement.
    Quelqu'un peut m'aider, je suis sur ce problème depuis 2 semaines et pas de résultats.

    Sinon quelqu'un connait (avec un exemple de code) comment changer les icônes des utilisateurs de Actives Directory users and computers) j'ai suivi les instructions donné par msdn mais hélas.
    Liens:http://msdn.microsoft.com/library/de...lass_icons.asp

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Le retour de la vengeance de l'ImageList contre-attaque.
    Il ne faut pas oublier qu'une ImageList n'est pas une simple zone mémoire contigüe, à l'inverse d'une chaîne. Une ImageList est un objet USER ou GDI, et dans le second cas est entièrement locale à un processus. Je pense qu'à moins de pouvoir injecter un thread dans le processus distant, tu n'aies aucun moyen de récupérer l'ImageList...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    t'es toujours à l'heure Médinoc, merci.
    En faite comment on peut injecter un thread dans le processus distant. avec cette méthode on pourra changer l'imagelist?

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    CreateRemoteThread() permet d'injecter le thread, mais le code doit déjà se trouver dans le processus distant.

    Mais comme j'ai vu que la fonction LoadLibraryA() ou LoadLibraryW() ne prend qu'un paramètre, on peut toujours tenter deux injections à la suite:
    • Une qui charge une DLL à toi
    • Puis une qui appelle une fonction de cette DLL

    (Il y a moyen de savoir à quelle adresse la DLL a été chargée avec CreateToolHelp32Snapshot() et Module32First()/Module32Next(), puis tu charges la DLL chez toi et tu fais le calcul (LoadLibrary(), GetModuleBaseAddress(), GetProcAddress()) pour savoir où la fonction se trouve dans le processus distant).


    PS: Là, on se lance dans le Hack de haut niveau :p
    C'est le genre de truc qu'un virus peut faire aux programmes du même user que lui, donc imagine le bordel si tu as le malheur d'exécuter un programme infecté en tant qu'admin...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par Médinoc
    CreateRemoteThread() permet d'injecter le thread, mais le code doit déjà se trouver dans le processus distant.

    Mais comme j'ai vu que la fonction LoadLibraryA() ou LoadLibraryW() ne prend qu'un paramètre, on peut toujours tenter deux injections à la suite:
    • Une qui charge une DLL à toi
    • Puis une qui appelle une fonction de cette DLL

    (Il y a moyen de savoir à quelle adresse la DLL a été chargée avec CreateToolHelp32Snapshot() et Module32First()/Module32Next(), puis tu charges la DLL chez toi et tu fais le calcul (LoadLibrary(), GetModuleBaseAddress(), GetProcAddress()) pour savoir où la fonction se trouve dans le processus distant).


    PS: Là, on se lance dans le Hack de haut niveau :p
    C'est le genre de truc qu'un virus peut faire aux programmes du même user que lui, donc imagine le bordel si tu as le malheur d'exécuter un programme infecté en tant qu'admin...
    waw trops de notions, et ça va demander de la concentration et de la recherche pour appliquer ça, mais à ton avis est ce que ça peut résoudre notre problème

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Ben, C'est du hack, donc c'est crade, mais une fois que tu as un thread perso qui tourne dans le process, tu peux y faire ce que tu veux et le transmettre à ton autre process de la façon que tu veux (sockets, pipes, mémoire partagée, etc.)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Changer le contenu d'une div dans un autre document
    Par francois6 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/11/2011, 11h05
  2. Lire les items d'une SyslistView32 d'un autre process
    Par DiGiTAL_MiDWAY dans le forum Windows
    Réponses: 5
    Dernier message: 20/10/2006, 21h10
  3. Réponses: 1
    Dernier message: 23/09/2006, 14h12
  4. Changer l'icône d'une fenêtre à partir d'un .res
    Par henderson dans le forum C++Builder
    Réponses: 8
    Dernier message: 11/03/2003, 10h48
  5. Changer l'image d'une texture
    Par alltech dans le forum DirectX
    Réponses: 5
    Dernier message: 21/08/2002, 01h31

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