begin process at 2012 05 30 12:56:43
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Driver

 > 

ZwCreateObject


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

ZwCreateObject

jeudi 19 octobre 2006 à 18:36:56 | ZwCreateObject

Willi

Membre Club Administrateur CodeS-SourceS
Bonsoir,
J'ai fais un petit driver afin de hooker ZwCreateFile. Il fonctionne sans problème.
J'essais à présent de récupérer le nom du fichier ouvert avec ZwQueryObject mais l'api me retourne STATUS_INVALID_HANDLE à chaque fois. C'est surement une erreur de débutant mais un petit coup de pouce ne serait pas de trop.

Quelqu'un a-t-il un oeil d'expert et me dire ce qui ne va pas ?
Merci.


Voici la partie de mon code:

#define MAX_PATH 256

......

NTSTATUS MyZwCreateFile(PHANDLE FileHandle,ACCESS_MASK DesiredAccess, POBJECT_ATTRIBUTES ObjectAttributes,PIO_STATUS_BLOCK IoStatusBlock,PLARGE_INTEGER AllocationSize,ULONG FileAttributes,ULONG ShareAccess,ULONG CreateDisposition,ULONG CreateOptions,PVOID EaBuffer,ULONG EaLength)
{
   ..........

   NTSTATUS rv;
   DWORD32 buf;

   buf=MAX_PATH*sizeof(WCHAR);
   rv=ZwQueryObject(*FileHandle,1,&buf,MAX_PATH,NULL);

   switch
(rv)
   {   
   case STATUS_SUCCESS:
      ZwWriteFile(hfl,0,0,0,&iosb,
"STATUS_SUCCESS\r\n",40,0,0);
      break;

   case
STATUS_INVALID_HANDLE:
      ZwWriteFile(hfl,0,0,0,&iosb,
"STATUS_INVALID_HANDLE\r\n",40,0,0);
      break;

   case
STATUS_INVALID_INFO_CLASS:
      ZwWriteFile(hfl,0,0,0,&iosb,
"STATUS_INVALID_INFO_CLASS\r\n",40,0,0);
      break;

   case
STATUS_INFO_LENGTH_MISMATCH:
      ZwWriteFile(hfl,0,0,0,&iosb,
"STATUS_INFO_LENGTH_MISMATCH\r\n",40,0,0);
      break;
   };

   ZwClose(hfl);

}

jeudi 19 octobre 2006 à 19:22:42 | Re : ZwCreateObject

clempar55

buf=MAX_PATH* sizeof (WCHAR);

si tu essaye d'allouer
MAX_PATH octets de mémoire essaye plutôt

buf=malloc( MAX_PATH* sizeof (WCHAR));

ainsi buf contiendra un pointeur sur une zone de memoire de
MAX_PATH octets.
jeudi 19 octobre 2006 à 19:39:54 | Re : ZwCreateObject

clempar55

j'allais oublier remplace aussi
rv=ZwQueryObject(*FileHandle,1,&buf,MAX_PATH,NULL);

par

rv=ZwQueryObject(*FileHandle,1,buf,MAX_PATH,NULL);

car buf contient déja une adresse



jeudi 19 octobre 2006 à 21:17:21 | Re : ZwCreateObject

Willi

Membre Club Administrateur CodeS-SourceS

Merci de tes réponses mais il me semble qu'en étant en kernel mode le malloc et compagnie ne sont acceptés.

Je vais essayer malgrès tout. Merci

jeudi 19 octobre 2006 à 22:01:28 | Re : ZwCreateObject

Willi

Membre Club Administrateur CodeS-SourceS

Arf j'ai du mieux mais les seuls fois ou j'ai un STATUS_SUCCESS c'est sur le fichier de log que j'écris dans ma méthode MyZwCreateFile cité plus haut.

........
OBJECT_NAME_INFORMATION *oni;
NTSTATUS rv;
DWORD32 buff;
HANDLE hfl;


.......
buff=MAX_PATH*
sizeof (WCHAR);
oni=(OBJECT_NAME_INFORMATION *)ExAllocatePool(NonPagedPool,buff);

rv=ZwQueryObject(*FileHandle,1,oni,buff,&buff);

if
(rv==STATUS_SUCCESS)
   ZwWriteFile(hfl,0,0,0,&iosb,oni[0].Name.Buffer,(ULONG)buff,0,0);

ExFreePool(oni);
.....

ZwClose(hfl);
lundi 17 novembre 2008 à 10:31:41 | Re : ZwCreateObject

chevalboiteux

Willi,

au final, as-tu réussi à retrouver le nom du fichier qui est appelé, car je suis dans le même cas que toi.

Merci d'avance


Cette discussion est classée dans : case, invalid, status, ulong, hfl


Répondre à ce message

Sujets en rapport avec ce message

randomize [ par niconico ] salut à tous, je débute en C++ et j'utilise VC++ pour compiler mes prog :le prob :avec ce petit programe (plus bas)il me sort 2 erreurs :error C2065: Qui veut gagné 50Frs!!!!!!!!!!!!!! [ par Akil ] Bonjour à tousJe cherche quelqu'un qui sait bien programmer en langage C++ et Vb.J'ai un projet d'éditeur de texte Farsi (Righttoleft)en C++ et je vou faire progresser....une progress bar !! [ par Xs ] c tout bete, mais je sais pas comment faire. ou plutot lui dire a quoi comparer sa progression par rapport au chargement de quelque chose.mon code : # objet non initialisé (API Win32) [ par Xs ] salut !voici mon code, d'abord :#include #include #include "resource.h"LRESULT CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam){cha positions [ par Xs ] salut ! je cherche et je trouve pas, ou alors je sais pas m'en servir, comment on recupere la position actuelle du fenetre(dialogbox).j'ai essayé des touches [ par Xs ] voila, j'ai essayé de tester des touches afin que, par exemple, lorsque l'on appuie sur Y, une message box apparaisse.j'ai recupérer ce code venat de erreur memoire [ par Xs ] alors voila, j'ai jamais vu ca.je lance mon programme. normal. puis je clique sur le bouton generer et là, pouf !un message d'erreur. alors, celui la, pu#!@'{&=!:; de memoire !!! [ par Xs ] salut.voila, presque chacun de mes prog, j'obtiens une erreur memoire du type "l'adresse "0x0001834F" ne peut etre "read"/"written"........."c 'est t switch....case [ par cabarrus ] salut !!je veux un programme qui demande l'âge, puis qui affiche un message selon l'âge frappé en utilisant switch...case.voici mon programme mais j'a Status Process d une application windows [ par Trinita16 ] est il possible de savoir le status d une application qui tourne en tache de fond sous windows ? je m explique, je voudrais savoir si mon application


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,905 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales