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 :

Stopper l'ouverture d'un fichier


Sujet :

Windows

  1. #1
    Invité
    Invité(e)
    Par défaut Stopper l'ouverture d'un fichier
    Bonjour,

    Pour un projet, j'ai créer un driver pour hooker la fonction ZwCreateFile qui execute l'ouverture d'un fichier.

    Ma fonction qui remplace ZwCreateFile teste le chemin du fichier qui doit être ouvert, puis si il est sur le lecteur E: par exemple, il faut que l'ouverture se stoppe.
    Le problème, c'est que lorsque je fais cela, à chaque fois que je cherche à ouvrir un fichier sur E:, l'application s'ouvre et me renvoie un message d'erreur.

    Je voulais donc savoir si quelqu'un connaissait une méthode permettant de breaker une fonction système, c'est à dire que tous les appels qui se font automatiquement après la fonction ZwCreateFile ne se fassent pas.

    Désolé, si je m'exprime mal, mais c'est un peu compliqué.

    Merci d'avance.

  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
    Je ne comprends pas. Tu veux faire croire au processus ouvrant qu'il a réussi?
    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
    Invité
    Invité(e)
    Par défaut
    Oui, c'est ça, car je fais le traitement de l'ouverture avec une autre application.

  4. #4
    Invité
    Invité(e)
    Par défaut
    En fait, j'aimerais stopper les appels systèmes à la fin de mon hook de ZwCreateFile, car pour l'instant, je peux faire un traitement dans ZwCreateFile, mais le système continue son traitement d'ouverture ensuite.

  5. #5
    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
    Ne peux-tu pas tout simplement retourner un handle vers un fichier bidon?
    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.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Je n'arrive pas à lui envoyer un handle de fichier bidon, cela ne fait rien.

    Par exemple, lorsque j'essaie d'ouvrir un fichier .txt, le traitement de mon hook de ZwCreateFile s'effectue correctement, mais ensuite, j'ai le notepad qui s'ouvre avec le message d'erreur suivant : "Le handle du fichier est incorrect".

  7. #7
    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
    As-tu penser à ouvrir le fichier bidon en question?

    Typiquement, tu changes le nom de fichier vers un truc temporaire...
    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.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Que veux-tu dire par ouvrir ? Si c'est ouvrir le fichier avec ZwCreateFile, j'ai déjà essayé et ça ne marche pas.

    Penses-tu que je peux essayer de faire cela en ASM ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    J'ai trouver de nouvelles choses :

    Je pense pouvoir le faire avec IShellExecuteHook, cependant, je n'ai pas trouvé de doc très facile à prendre en main pour faire quelque chose avec ça.

    Si vous connaissez des liens qui pourraient m'interesser, merci de me les donner.

    Merci d'avance

  10. #10
    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
    Si j'en crois le nom, IShellExecuteHook n'agit que sur les lancements de fichier par le shell: En gros, ce qui se passe si tu double-cliques sur un fichier, ou si un programme appelle la fonction ShellExecute().

    ShellExecute() n'a rien à voir avec CreateFile(), et est plus proche de CreateProcess().
    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.

  11. #11
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    Ma fonction qui remplace ZwCreateFile teste le chemin du fichier qui doit être ouvert, puis si il est sur le lecteur E: par exemple, il faut que l'ouverture se stoppe.
    Ok, je suppose que tu as fait un hook de la table SSDT.

    Le problème, c'est que lorsque je fais cela, à chaque fois que je cherche à ouvrir un fichier sur E:, l'application s'ouvre et me renvoie un message d'erreur.
    Et tu voudrais que ca fasse quoi exactement?

    Penses-tu que je peux essayer de faire cela en ASM ?
    A moins que tu veuilles faire de l'inline patching mais je n'en vois pas l'intérêt...

    Pourrais tu définir clairement le comportement que tu désires obtenir durant l'ouverture d'un fichier sur le disque E:\?

    Mettre le code de ta fonction myZwCreateFile() pourrait aussi être utile.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Si j'en crois le nom, IShellExecuteHook n'agit que sur les lancements de fichier par le shell: En gros, ce qui se passe si tu double-cliques sur un fichier, ou si un programme appelle la fonction ShellExecute().

    ShellExecute() n'a rien à voir avec CreateFile(), et est plus proche de CreateProcess().
    Mais c'est ce que je veux faire, quand un utilisateur double-clique sur un fichier ou lorsqu'il ouvre un fichier à partir d'une application avec la boite de dialogue Fichier->Ouvrir.

    Maintenant, je cherche des liens qui pourraient m'aider à implémenter IShellExecuteHook !!

Discussions similaires

  1. Ouverture d'un fichier excel predefini
    Par nberthonneau dans le forum Access
    Réponses: 10
    Dernier message: 13/06/2007, 22h14
  2. [Système] ouverture d'un fichier pdf
    Par joneil dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 17/05/2005, 10h36
  3. Réponses: 2
    Dernier message: 06/04/2005, 12h01
  4. Réponses: 5
    Dernier message: 27/07/2004, 17h04
  5. Réponses: 2
    Dernier message: 22/07/2002, 12h13

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