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

 Delphi Discussion :

Un fichier texte dans mon exécutable


Sujet :

Delphi

  1. #1
    Inscrit
    Inscrit en
    Juin 2007
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 103
    Points : 77
    Points
    77
    Par défaut Un fichier texte dans mon exécutable
    Bonjour a tous et a toute ,
    SVP je veux inclure un fichier texte dans mon executable avec posssibilité de :
    1- Ecrire dans mon fichier texte.
    2- Consulter et modifier mon fichier text .
    tous ca dans un fichiet text qui ce situe dans mon executable .
    est t il possible ?
    bonne soirée.

  2. #2
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Euh..oui c'est possible.
    Mais disons que modifier un exécutable n'est intéressant que dans des cas très précis (et rares !!). De plus la majorité des antivirus va gueuler.
    Si tu nous disais pourquoi tu veux faire ça on te donnerais peut être d'autres solutions.

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 844
    Points
    24 844
    Par défaut
    1- Explique ton problème, une aute solution existe ! je suis aussi d'accord avec PhilNext

    1- Tu peux le faire de façon assez simple ... mais potentiellement risqué

    Ton programme se lance pour la première fois, il ne contient rien ...
    Ton programme se duplique sous un autre nom (genre Programme.New)
    Ton programme vie sa vie
    Ton programme se ferme (après la boucle Run dans le DPR)
    A ce moment là, tu ouvre la duplication comme un binaire, tu insères à la fin, la taille du fichier texte + un checksum + le fichier texte + la taille du fichier texte + FF FF FF FF...
    tu génère un fichier BAT, qui va en boucle tenter de renommer l'ancien exe en autre chose, puis renommer le nouvel exe avec le bon nom ...
    Ton programme se fini totalement
    le fichier BAT peut faire son travail ...


    ton programme se lance pour la seconde fois (valable pour la 1ère aussi)
    Il se lit lui-même, il va lire les 4 derniers octets si c'est FF FF FF FF, il lit les 4 suivtans c'est la longueur du texte, il va donc lire, les 8 octets à partir de la fin en reculant de "8 + la longueur lu", il tombe donc sur la longueur de la chaine que l'on a répétée, si les valeurs sont égales, il va lire le texte, calculer le checksum, et si c'est bon, il se copie lui même sans le texte, écrit le texte dans un fichier temporaire, et continue sa vie
    ...

    lol, c'est la bonne Uzinagaz, mais ça doit être drôle à faire, il doit y avoir d'autres méthodes, un pote l'avait fait, il avait mis des marqueurs dans son exe, et modifiait entre les deux marqueurs, mais modifier au milieu, hum risqué ... à la fin, c'est tout simplement ignoré ...



    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
    :LoopDeleteBack
    DEL "Programme.exe.Back"
    IF EXIST "Programme.Exe.Back" GOTO LoopDeleteBack
     
    :LoopRenameOld
    RENAME "Programme.Exe" "Programme.exe.Back"
    IF NOT EXIST "Programme.exe.Back" GOTO LoopRenameOld
     
    :LoopDeleteOld
    DEL "Programme.Exe"
    IF EXIST "Programme.Exe" GOTO LoopDeleteOld
     
    :LoopRenameNew
    RENAME "Programme.New" "Programme.exe"
    IF NOT EXIST "Programme.exe" GOTO LoopRenameNew
     
    DEL "Fichier.Bat"
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Inscrit
    Inscrit en
    Juin 2007
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 103
    Points : 77
    Points
    77
    Par défaut
    Bonjour et merci pour vos reponse ,
    je vous vous dire ce que je veux exactement :
    je veut enregister la date de démarage de logiciel ainsi la clé d'autorisation dans mon fichier executable c-a-d je veux ecrire dans mon executable ,
    je ne veux pas ecrire dans la base de registre ni les fichier Ini : est il possible ?

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 844
    Points
    24 844
    Par défaut
    Et Quel en sera l'utilité ?
    Une sécurité ?
    Il suffira de copier l'exe avant de le lancer pour la première fois, et lorsque l'original ne voudra plus se laner à cause de la license, il suffira de relancer la copie ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Inscrit
    Inscrit en
    Juin 2007
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 103
    Points : 77
    Points
    77
    Par défaut
    Bonjour merci baucoup ShaiLeTroll pour ton interet
    mais SVP est il possible de faire ca ?

  7. #7
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Jette un coup d'oeil là dessus : http://www.torry.net/authorsmore.php?id=3984

  8. #8
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    j'ai regardé le code le ExeMod, sa fonction AlterExe est une rustine

    il enregistre l'exe dans un fichier temporaire qu'il execute pour pouvoir modifier l'original
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    procedure AlterExe;
    begin
     if (Exe) <> '' then
     begin
       String2File(Exe, 'temp0a0.exe');
       ShellExecute(0, 'open', PChar('temp0a0.exe'),
         PChar('"'+ExtractFilename(Application.ExeName)+'"'), nil, SW_SHOW);
       Application.Terminate;
     end;
    end;
    il me semble - mais je n'ai pas vérifié - que depuis Windows 2000 ou XP il est possible de modifier un executable ouvert...voir UpdateResource
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #9
    Inscrit
    Inscrit en
    Juin 2007
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 103
    Points : 77
    Points
    77
    Par défaut
    bonjour ;
    et baucoup pour Vous,
    philnext c'est exactement ce que je cherche .
    c'est pour ça je vais mettre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Renommer un fichier texte dans mon espace d'hébergement
    Par fishingman dans le forum ASP.NET
    Réponses: 1
    Dernier message: 21/05/2010, 00h15
  2. Réponses: 4
    Dernier message: 31/08/2009, 11h37
  3. Effacer du texte dans mon fichier "texte.html"
    Par midnnight dans le forum Langage
    Réponses: 4
    Dernier message: 15/05/2009, 14h06
  4. Réponses: 3
    Dernier message: 05/06/2007, 11h15
  5. [CR] fichier texte dans un etat
    Par fab dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 12/09/2003, 10h59

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