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 :

Lancer un Exe


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2008
    Messages : 125
    Par défaut Lancer un Exe
    Bonjour a tous, j'espère que je suis dans la bonne section.

    Voilà, je souhaiterais développer un Driver Windows, qui effectue des opérations lorsqu'un utilisateur ouvre un fichier.

    J'ai trouvé sur internet la code suivant : (je suis pas très bon en C++ désolé )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    #include <ntddk.h>
    #define  BUFFER_SIZE 30
    //
        HANDLE   handle;
        NTSTATUS ntstatus;
        IO_STATUS_BLOCK    ioStatusBlock;
        LARGE_INTEGER      byteOffset;
       CHAR     buffer[BUFFER_SIZE];
        size_t  cb;
     
    NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)  
    {
             NTSTATUS NtStatus = STATUS_SUCCESS;
             /////////////////////// THIS SECTION /////////////////////////////////////
     UNICODE_STRING     uniName;
         OBJECT_ATTRIBUTES  objAttr;
     
     ////////////////////////////////   \\SystemRoot\\ or C:\WINDOWS / C:|WINNT
      RtlInitUnicodeString(&uniName, L"\\SystemRoot\\native.txt");  // or L"\\SystemRoot\\example.txt"
         InitializeObjectAttributes(&objAttr, &uniName, OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, NULL, NULL);
     //////////////////////////////////
     ///////////////////////////////////
     //Load the buffer (ie. contents of text file to the console)
      ntstatus = ZwCreateFile(&handle,
                                GENERIC_READ,
                                &objAttr, &ioStatusBlock,
                                NULL,
                                FILE_ATTRIBUTE_NORMAL,
                                0,
                                FILE_OPEN, 
                                FILE_SYNCHRONOUS_IO_NONALERT,
                                NULL, 0);
     ///////////////////////////////////////
     if(NT_SUCCESS(ntstatus)) {
             byteOffset.LowPart = byteOffset.HighPart = 0;
             ntstatus = ZwReadFile(handle, NULL, NULL, NULL, &ioStatusBlock,
                                  buffer, BUFFER_SIZE, &byteOffset, NULL);
            buffer[BUFFER_SIZE-1] = '\0';
               KdPrint(("%s\n", buffer));
     
             }
            ZwClose(handle);
       return 0;
    }
    Ma question est la suivante : Est-il possible de lancer un exe (par exemple notepad.exe), à la place du "KdPrint" et de lui passer en paramètre le filename ?

    Merci à tous pour vos réponses.

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Il faut appeler ZwCreateProcess qui s'utilise à peu près comme CreateProcess ...

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2008
    Messages : 125
    Par défaut
    Super, merci beaucoup ! Je vais me renseigner sur cette fonction. Sais tu quelle est la différence avec NtCreateProcess ?

    Merci

  4. #4
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Bah, c'est comme pour toute fonction Zw : d'une part, le système ne valide pas les arguments avant de continuer donc code plus rapide mais risque plus élevé de plantage si jamais tu as fourni n'importe quoi à la fonction et d'autre part, du fait de sa dangerosité, elle ne peut-être appelée que par un driver en mode kernel, alors que les fonctions Nt peuvent aussi bien être appelées dans un driver en mode kernel que dans n'importe quelle autre application.

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2008
    Messages : 125
    Par défaut
    Ah ok je vois. Merci pour ces informations. Je vais faire quelques recherches sur Google concernant l'implémentatio nde cette fonction. Aurais tu quelques liens qui pourraient me guider par hasard ?

    Merci beaucoup.

  6. #6
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Implémentation ? Je te rappelle que Windows n'est pas Open source . Si c'est de la doc que tu voulais parler, c'est tout simplement dans l'aide. A part ça, j'ai appris à programmer les drivers avec l'aide du DDK et les tutoriels de CodeProject, notamment ceux de de Toby Opferman donc si tu me demandes de t'orienter, je ne peux évidemment que te les conseiller.

Discussions similaires

  1. [FreePascal] Lancer un exe
    Par Ultraboss dans le forum Free Pascal
    Réponses: 4
    Dernier message: 02/11/2005, 20h03
  2. Réponses: 7
    Dernier message: 10/10/2005, 19h54
  3. [VS .NET] Comment lancer un .exe
    Par lastcheper dans le forum MFC
    Réponses: 2
    Dernier message: 31/08/2005, 16h38
  4. [Flash MX2004] Lancer un *.exe avec fscommand
    Par pioup dans le forum Flash
    Réponses: 7
    Dernier message: 30/07/2004, 17h28
  5. [Debutant(e)]Lancer un exe en ligne de commande
    Par MASSAKA dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 18/05/2004, 15h54

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