Stopper hook ZwCreateFile

[Résolu]
Signaler
Messages postés
12
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
18 mai 2009
-
Messages postés
12
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
18 mai 2009
-
Bonjour à tous,

Je vous expose mon problème :

J'ai créer un driver pour hooker la fonction ZwCreateFile, cela marche presque bien, je fais le traitement que je veux lors de l'ouverture d'un fichier. Le problème, c'est que j'aimerais que le fichier ne s'ouvre pas ensuite.

J'aimerais qu'à la fin de la fonction hookZwCreateFile, il ne se passe plus rien, car en ce moment, lorsque je hook ZwCreateFile, mon driver effectue le traitement sur l'ouverture du fichier et ensuite ouvre le fichier. Moi, j'aimerais qu'il n'ouvre pas le fichier.

J'ai essayé en passant des retours bidon, mais cela m'indique que le handle est invalide.

Merci d'avance pour vos réponses.
A voir également:

7 réponses

Messages postés
28
Date d'inscription
jeudi 3 octobre 2002
Statut
Membre
Dernière intervention
31 mai 2010

Si ton but est de filtrer des fichiers, un hook sur ZwCreateFile n'est pas forcement la methode la plus judicieuse.
On peut définir sous windows des driver de filtres voir le document "Filter Driver Development Guide".
Je me suis toujours dit qu'il fallait que j'en fasse un un jour et je n'ai toujours pas eu le temps de m'y mettre :(
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="ProgId" content="Word.Document" /><meta name="Generator" content="Microsoft Word 10" /><meta name="Originator" content="Microsoft Word 10" /><link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CRANTAN%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml" /><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:HyphenationZone>21</w:HyphenationZone>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
</w:Compatibility>
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
</w:WordDocument>
</xml><![endif]--><style><!--
/* Font Definitions */
@font-face
{font-family:Verdana;
panose-1:2 11 6 4 3 5 4 4 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:536871559 0 0 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-name:"Normal\,APPLY ANOTHER STYLE";
mso-style-parent:"";
margin-top:3.0pt;
margin-right:0cm;
margin-bottom:3.0pt;
margin-left:0cm;
line-height:11.0pt;
mso-line-height-rule:exactly;
mso-pagination:widow-orphan;
font-size:8.0pt;
mso-bidi-font-size:10.0pt;
font-family:Verdana;
mso-fareast-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
color:fuchsia;
mso-ansi-language:EN-US;
mso-fareast-language:EN-US;
font-weight:bold;
mso-bidi-font-weight:normal;}
@page Section1
{size:612.0pt 792.0pt;
margin:70.85pt 70.85pt 70.85pt 70.85pt;
mso-header-margin:36.0pt;
mso-footer-margin:36.0pt;
mso-paper-source:0;}
div.Section1
{page:Section1;}
--></style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Tableau Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";}
</style>
<![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1"/>
</o:shapelayout></xml><![endif]-->
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
Généralement les fonctions de hook des fonctions du kernel interceptent l'appel, traitent les paramètres et finissent par appeler la fonction originale pour ne pas perturber le fonctionnement du système. Si dans certains cas on souhaite bloquer l'accès à la fonction originale, il suffit de ne pas appeler cette dernière dans la fonction de hook et retourner une valeur d'erreur immédiatement.
Messages postés
12
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
18 mai 2009

Bonne idée !! mais j'y avais déjà pensé et j'ai essayé. Mais même en retournant une valeur d'erreur, il continue à essayer d'ouvrir le fichier et c'est là qu'il me dit que le handle est incorrect.

LA valeur de retour est de type NTSTATUS, si tu connais la valeur de retour qu'il faut donner, merci de me l'indiquer.
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Je n'ai pas bien compris ce que tu veux faire exactement. Normalement, c'est l'application en User-Mode qui décidera de l'action à entreprendre en cas d'échec de CreateFile(). Cette dernière appelle NTCreateFile() qui à son tour appelle zwCreateFile(). Si ta fonction zwCreateFile() retourne une valeur d'erreur, celle-ci sera reconduite vers l'application appelante (User-Mode) qui attend une valeur de retour et affichera un message d'erreur ou agira autrement. Mais dans tous les cas le fichier ne sera pas ouvert (ou créé). Il y'a beaucoup de valeurs de retour NTSTATUS que tu peux utiliser. Exemples:
STATUS_OBJECT_NAME_NOT_FOUND
STATUS_OBJECT_NAME_INVALID
STATUS_OBJECT_PATH_NOT_FOUND
STATUS_OBJECT_PATH_INVALID
Tu peux même retourner STATUS_SUCCESS et mettre le handle du fichier à INVALID_HANDLE_VALUE qui correspond à -1 ou 0xFFFFFFFF:
*pHandle=(HANDLE)-1;
return STATUS_SUCCESS;
Messages postés
12
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
18 mai 2009

Je susi d'accord avec toi sur le raisonnement, mais le problème c'est que par exemple, si je double-clique sur un fichier.txt, le notepad de Windows s'ouvre et me renvoie le message d'erreur "Le handle est invalide".

Donc je ne vois pas comment faire pour que l'application par defaut ne s'ouvre pas.
Messages postés
12
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
18 mai 2009

Sinon, je vais essayer avec les codes d'erreurs que tu m'as donné.
Messages postés
12
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
18 mai 2009

@ yes : Connais-tu de bons tutoriels pour faire des Filter Driver ?