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

Assembleur Discussion :

Empêcher la copie d'un prog pendant son exécution


Sujet :

Assembleur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 19
    Points : 15
    Points
    15
    Par défaut Empêcher la copie d'un prog pendant son exécution
    bonjour à tous..!

    Voici un petit programme écrit en HLA.
    Il copie un exéc. (ici : calc.exe) vers P1.exe, puis lance P1.exe et le détruit après exécution.
    Mon but est d'empêcher la copie (p.ex. via l'Explorateur) de P1.exe pendant son exécution.
    Pour cela, je fixe dwShareMode à 0, mais cela ne marche pas...

    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
    46
    47
    48
    49
    50
    51
    52
    53
    program Abra;
     
    //	réalise une copie de MonProg.exe vers p1.exe. (exemple avec calc.exe)
    //	puis charge P1.exe.
    //	après exécution, détruit p1.exe
    //	le but est de rendre p1.exe impossible à copier pdt l'exécution...
    //	à essayer avec n'importe quel *.exe
     
    #include( "stdlib.hhf" )
    #include( "fileio.hhf" )
    #include( "stdout.hhf" )
    #include( "w.hhf" )
     
    static
       Fich:	dword;
       P1exist:	boolean;
    endstatic;
     
    const
       MonF1:string:="C:\WINNT\system32\calc.exe";
       MonF2:string:="C:\WINNT\system32\P1.exe";
    endconst;
     
    begin Abra;
     
    // fait la copie
    	w.CopyFile
    	(
    	MonF1,
    	MonF2,
    	P1exist
    	);
     
    // ouvre une handle dessus avec dwShareMode mis à 0, mais le but n'est pas atteint...
    	w.CreateFile
    	(
    		MonF2,
    		w.GENERIC_READ | w.GENERIC_WRITE,
    		0,
    		NULL,
    		w.OPEN_EXISTING,
    		w.FILE_ATTRIBUTE_NORMAL,
    		NULL
    	);
     
    	mov (eax, Fich);
     
    //	w.CloseHandle(Fich);	// - si je ferme le handle ici, P1.exe se charge effectivement, mais on peut facilement le copier via l'Explorateur (juste ce que je veux éviter)				// - si je ne ferme pas le handle, alors la commande os.system() ne fonctionne pas --> ne charge pas P1.exe en mémoire
     
    	os.system("C:\WINNT\system32\P1.exe");
    	fileio.delete("C:\WINNT\system32\p1.exe");
     
    end Abra;
    Peut-on me dire comment atteindre le but recherché ?

    merci,
    et bonne journée à tous,

    Juan.

  2. #2
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 39
    Points : 46
    Points
    46
    Par défaut
    je ne sais pas si c'est possible dans les environnement demi-kro$oft mais en principe on fait plustot un programme qui génère une image du programme dans la mémoire et on l'execute depuis celle ci au lieu de l'executer depuis un disque ce qui empeche toute copie du code executé que ce soit durant l'execution ou non.


    :

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 19
    Points : 15
    Points
    15
    Par défaut
    ton idée est effectivement très intéressante...
    ...mais comment génère-t-on une image directement en mémoire ?

    quelle fonction doit-on utiliser pour cela ?

    merci,
    et à bientôt,

    Juan.

  4. #4
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 39
    Points : 46
    Points
    46
    Par défaut
    bjr,

    en terme de fonction je sais pas trop comment faire mais

    techniquement c'est un fichier image exactement comme on fait des fichiers images ISO de CD sauf qu'on la copie dans la memoire.

    Je ne maitrise pas encore la technique mais je suis en train d'etudier un mini-projet de live-disquette linux et c'est exactement ca que ca fait ca boot et ca construit un espace reserve (disque virtuel) dans la memoire et ca y lance une application (dans ce cas un kernel : un noyau d'OS koi).

    tu peux contacter les auteurs des lives-disquettes pour de l'aide si tu veux.

    moi j'en suis a la theorie du procede puisque je commencerai ca aprem mon demenagement donc vers fin octobre debut novembre...

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/08/2010, 23h40
  2. Réponses: 33
    Dernier message: 28/04/2010, 04h44
  3. Recompiler un programme pendant son exécution
    Par Djam75 dans le forum PL/SQL
    Réponses: 9
    Dernier message: 28/05/2009, 14h43
  4. Empêcher la lecture d'un fichier pendant son écriture
    Par FredericB dans le forum C++Builder
    Réponses: 1
    Dernier message: 25/07/2007, 18h30
  5. Developper pendant son temps libre et argent?
    Par Geoffray71 dans le forum Structure
    Réponses: 25
    Dernier message: 11/04/2007, 09h41

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