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 :

Gérer en C , exception bas niveau (LEVEL : USER)


Sujet :

Windows

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    915
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 915
    Points : 85
    Points
    85
    Par défaut Gérer en C , exception bas niveau (LEVEL : USER)
    Bonjour,
    c'est assez urgent , j'aurais besoin de votre aide :

    Je voudrais installer un handler d'exception bas niveau dans mon application.

    Il y a l'instruction try ?
    Non , ca ne me va pas ,

    car c'est dans une librairie (.dll) chargé en mode stream ,
    et l'instruction try est sans effet( uniquement en x64,AMD64),
    j'ai essayer de le charger en natif , Ca fonctionne,
    j'ai donc absolument besoin de pouvoir gérer un handler d'exception par les
    API microsoft ! cette fonction API qui sera appeler dans ma librairie chargé en streaming.
    J'ai ce probléme uniquement en x64 et non en x86.

    Pour info : Je dois gérer l'exception instruction privilégier pour détecter la présence de vmware.


    Merci bcp

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 796
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 796
    Points : 13 475
    Points
    13 475
    Par défaut
    J'ai pas trop compris ce chargement en mode stream...

    Si la librairie est 32 bits, seule une application 32 bits pourra la charger. Est-ce le cas sur le x64 ?

    Une autre approche pour détecter la machine virtuelle.

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    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 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Pour traiter une exception Win32, il faut utiliser __try et __except au lieu de try et catch (ou bien, compiler avec l'option qui fait marcher les deux ensemble, /EHa).

    PS: Une bonne VM ne devrait pas être détectable aussi facilement...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    915
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 915
    Points : 85
    Points
    85
    Par défaut
    J'essayerai ce soir,

    C'est mon application AMD64 qui charge en stream une librairie AMD64.

    Hier soir, en bidouillant , je me suis rendu compte que les "__try" et "__except"
    ne fonctionnait pas sur les processus AMD64 sur les fonctions (importer) d'une librairie (.dll) chargé en mode stream.
    En X86 pas de problème.

    Un bug ou protection de chez m$ : peux être pour de mesure de sécurité.

    Bien entendu le "__try" "et "__except" fonctionne bien sur les librairie chargé en mode natif.

    J'ai besoin de votre aide pour faire marcher les exception sur les fonctions loader depuis une .dll chargé en mode stream en AMD64 ?

    Je vais regarder ce soir l'option de compilation "Enable C++ exception"

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    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 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Qu'est-ce que tu veux dire par "en mode stream"? Je ne trouve pas ça sur MSDN (j'ai cherché "stream dll").

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    915
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 915
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Qu'est-ce que tu veux dire par "en mode stream"? Je ne trouve pas ça sur MSDN (j'ai cherché "stream dll").
    Sur MSDN , il n'existe pas, non implémenter dans Windows, d'ailleur c'est abérant.
    Mais j'ai trouver des fonctions avec code source pour justement chargé une
    librairie en mode stream.
    Cela fonctionne bien en X86 et (AMD64,64 bits) , mais problème c'est le "__try" et "__except" qui ne fonctionne pas (sans effets) sur les fonctions de ma librairie (.dll) chargé en mode stream.

    D’après moi: c'est pas ces fonctions qui sont en cause mais plutôt Windows ,
    c'est m$ qui blinde trop ! et qui me pénalise,
    et merci m$.

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    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 381
    Points : 41 582
    Points
    41 582
    Par défaut
    En gros, "en mode stream", ça veut dire télécharger le fichier et le charger depuis la mémoire sans passer par le disque?

    J'ai du mal à voir l'intérêt quand on peut utiliser un fichier temporaire (GetTempPath() + GetTempFileName() etc.)

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    915
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 915
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    En gros, "en mode stream", ça veut dire télécharger le fichier et le charger depuis la mémoire sans passer par le disque?
    J'ai fais un Windows Update , toujours le même probléme.

Discussions similaires

  1. formatage bas niveau
    Par hiko-seijuro dans le forum Composants
    Réponses: 5
    Dernier message: 03/06/2005, 19h38
  2. Formatage bas niveau
    Par wareq dans le forum Composants
    Réponses: 5
    Dernier message: 09/05/2005, 16h00
  3. formatage de bas niveau ??
    Par vbcasimir dans le forum Windows XP
    Réponses: 11
    Dernier message: 06/05/2005, 18h45
  4. Programmation bas niveau de la carte vidéo !!
    Par Invité dans le forum Assembleur
    Réponses: 3
    Dernier message: 03/03/2005, 11h05

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