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 :

Modifier un executable


Sujet :

Windows

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 204
    Points : 48
    Points
    48
    Par défaut Modifier un executable
    Bonjour,

    Je voudrais plus tard , developpez un prog lambda qui permet de mettre une modal password dans un fichier executable selectionner par l'utilisateur.
    J'execute l'executable modifier , il demande un mot de passe saisie dans le prog lambda.

    Connaissez-vous des sites parlant de modification d'executable , (en C de préférence) ?

    Il faut surement déjà modifier l'adresse EntryPoint.

    Merci;

  2. #2
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Bonjour,

    Citation Envoyé par sivaller Voir le message
    Bonjour,

    Je voudrais plus tard , developpez un prog lambda qui permet de mettre une modal password dans un fichier executable selectionner par l'utilisateur.
    J'execute l'executable modifier , il demande un mot de passe saisie dans le prog lambda.

    Connaissez-vous des sites parlant de modification d'executable , (en C de préférence) ?

    Il faut surement déjà modifier l'adresse EntryPoint.

    Merci;
    C'est possible mais relativement compliqué. En quelques étapes:

    1) Injecter un "stub" (un routine indépendante du programme principal) qui contiendra le code de la boite de dialogue modale. Le stub devra contenir le mot de passe donné.

    1.a) Le code du stub devra être du code PIC (Position Independant Code) donc forcément de l'assembleur. Les compilos C ne génèrent jamais du code purement PIC.

    1.b) Il faudra trouver de la place dans l'exécutable ce qui n'est pas toujours possible. Si la place fait défaut il faudra ajouter une section.

    1.c) il faudra ajouter les APIs nécessaires au stub dans l'IAT (Import Address Table) du fichier PE, ce qui nécessite d'écraser l'ancienne IAT. Autre possibilité, résoudre les pointeurs de fonction au runtime (ce qui ne nécessite pas une nouvelle IAT), mais avec toutefois la possibilité dans ce cas d'être marqué comme un code viral par quelques A.V.

    2) Une fois le stub injecté, rediriger l'entry point vers le stub.

    3) Chiffrer les sections de code et de donnée (sans ça un reverser même débutant fera sauter la protection en deux temps trois mouvements). Ça implique d'embarquer des routines de déchiffrement dans le stub...

    Donc c'est pas franchement simple et vraiment casse-tête alors qu'il y a plus probablement plus simple:

    1) Chiffrer le programme avec un système de chiffrement à clé symétrique réputé incassable avec une taille de clé suffisante (type AES 128 bits). La clé sera bien sur le password entré.

    2) Injecter le programme en ressource d'un autre programme (le 'self-extractor').

    3) A l'exécution le programme (self-extractor) demande la clé. Extraction depuis les ressources du self-extractor. L'exécution du programme protégé, dans ce cas, n'étant possible que si la clé est la bonne.

    Dans ce dernier cas tout est faisable en C uniquement, sans aucun hack.

    Ça pose d'autres problèmes de protection (par ex. une fois la clé connue, l'exécution du programme protégé est garantie), mais l'avantage est que la protection est quasiment incassable.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 204
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Neitsa Voir le message
    Bonjour,


    3) A l'exécution le programme (self-extractor) demande la clé. Extraction depuis les ressources du self-extractor. L'exécution du programme protégé, dans ce cas, n'étant possible que si la clé est la bonne.

    Je ne comprend pas injecter un programme en ressource, tu veux dire quand j'execute l'exe , aprés saisie du mot de passe ,il s'extrait la ressource sur un fichier temporaire et l'execute ????
    si oui , ce n'est pas propre

  4. #4
    Membre éclairé Avatar de sloshy
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2005
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 728
    Points : 723
    Points
    723
    Par défaut
    Bonsoir,
    Te baser sur les sources d'upx devrait être une bonne entrée en la matière.
    Je doute que tu trouves un site qui te prenne par la main pour modifier des exécutable, quelques blogs peut être.

    La solution proposée par Neitsa n'est pas optimale mais à l'avantage d'être simple, en quoi est-ce sale?

  5. #5
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 385
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 385
    Points : 20 463
    Points
    20 463
    Par défaut
    Citation Envoyé par sivaller Voir le message
    Bonjour,

    Je voudrais plus tard , developpez un prog lambda qui permet de mettre une modal password dans un fichier executable selectionner par l'utilisateur.
    J'execute l'executable modifier , il demande un mot de passe saisie dans le prog lambda.

    Connaissez-vous des sites parlant de modification d'executable , (en C de préférence) ?
    je n'ai absolument pas compris pourquoi tu veux modifier l'exécutable ?
    Est-ce que tu peux écrire en bon français merci ?
    Citation Envoyé par sivaller Voir le message
    Il faut surement déjà modifier l'adresse EntryPoint.
    non c'est pas du tout cela.
    L'adresse de point d'entrée c'est l'adresse à laquelle commence l'exécution du programme tout bêtement en assembleur.
    Regarder dans le MSDN il y a des API Windows pour modifier les ressources d'un exécutable en exécution

    Il y a la fonction BeginUpdateResource
    http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx
    et UpdateResource- EndUpdateResource

    UpdateResource Function
    Adds, deletes, or replaces a resource in a portable executable (PE) file. There are some restrictions on resource updates in files that contain Resource Configuration (RC Config) data: language-neutral (LN) files and language-specific resource (.mui) files.
    en win32 les contrôles contenus dans une fenêtre, les push buttons, edit boxes et les fenêtres dialog sont décrits dans un fichier .rc qui est compilé de la même manière qu'un fichier .C ou .Cpp

  6. #6
    Expert éminent
    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 : 38
    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
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par sivaller Voir le message
    Bonjour,

    Je voudrais plus tard , developpez un prog lambda qui permet de mettre une modal password dans un fichier executable selectionner par l'utilisateur.
    J'execute l'executable modifier , il demande un mot de passe saisie dans le prog lambda.

    Connaissez-vous des sites parlant de modification d'executable , (en C de préférence) ?

    Il faut surement déjà modifier l'adresse EntryPoint.

    Merci;
    L'auteur de cet article a du savoir à l'avance qu'un jour tu poseras cette question .

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 204
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Melem Voir le message
    L'auteur de cet article a du savoir à l'avance qu'un jour tu poseras cette question .
    j'ai jeter un oeil,
    Content : j'ai reussi à inserer un MessageBox avant la boite de dialogue password..

    Par contre ca ne marche pas sur les exe 64.

    Merci beaucoup

Discussions similaires

  1. Réponses: 7
    Dernier message: 11/10/2009, 23h20
  2. Données modifiables incorporées dans l'executable.
    Par _Michel dans le forum Windows
    Réponses: 6
    Dernier message: 24/01/2008, 21h53
  3. Comment modifier par programmation une form crée lors de l'execution
    Par Fab.asia dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 31/07/2007, 14h47
  4. Réponses: 12
    Dernier message: 27/10/2006, 09h51
  5. Réponses: 4
    Dernier message: 29/09/2006, 15h05

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