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

x86 32-bits / 64-bits Assembleur Discussion :

Coder un binaire PE sans étape de linkage


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 2
    Par défaut Coder un binaire PE sans étape de linkage
    Bonjour, j'étudies l'assembleur x86 et je me demandais comment faire un programme propre, je veux dire sans linker. juste binaire sous nasm c'est possible je crois mais est-ce qu'il y a des standars a respecter ou si il sajit simplement de coder ?

    Et si je veux exécuter mon code binaire sous windows est-ce que c'est possible en cliquant droit et en choisissant le loader de windows ? en passant commet il s'appele le nom du fichier du loader de windows, à moins qu'il soit intégré dans le kernel ? Dans ce cas-ci comment faire exécuter mon code ? est-ce que je devrais plutôt le charger en mémoire et faire un Jump Far ? mais je crois que le kernel de windows ne me laissera pas loader du code en mémoire directement comme ça..

    Merci de m'éclairer sur ces points

  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
    Par défaut
    Bonjour,

    Je ne vois pas comment on peut exécuter du code sans l'étape de linkage, qui produit le fichier executable (EXE ou COM).

    Windows ne laissera surment pas s'executer du code sans qu'il réponde aux normes définies qu'il connait (un fichier répondant aux normes PE/COFF).

    Le loader de windows doit être compis dans le kernel (Ntoskernel sous environnement NT).

    Il reste le Kernel Driver mais lui aussi répond à une norme de fichier précise et ca n'est pas juste du code binaire. On peut exécuter du code binaire mais seulement à partir d'un autre executable.

    Il suffit d'allouer un espace mémoire (GlobalAlloc par exemple) de récupérer le pointeur, d'y injecter le code binaire, de sauter vers le code binaire et de l'exécuter (en fait ce processus est semblable à l'appel d'une DLL puisque ces dernières s'exécutent dans l'esppace d'adressage du process appelant, mais c'est nettemant moins sécurisé).

    Windows a absolument besion de certaines indication pour executer du code (DOS_STUB,image_base, taille de l'executable...) donc à mon avis, le binaire exécutable seul, ca n'est pas possible...

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 96
    Par défaut
    Windows a absolument besion de certaines indication pour executer du code (DOS_STUB,image_base, taille de l'executable...) donc à mon avis, le binaire exécutable seul, ca n'est pas possible...
    Non, a moins que tu codes toi meme les en-têtes au format PE directement sous nasm 8)

  4. #4
    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
    Par défaut
    Bonjour,

    Je n'ai pas le dis le contraire 2PluS4, seulement il faut qd même coder l'entête PE ce qui revient somme toute à en faire un executable, donc faire un "simili-linkage". Je voulais simplement dire qu'il fallait respecter certaines condition.

    Mais oui,tu as tout as fait raison, il est bel et bien permis de faire ceci sans linkage.

    J'ai récemment participé à un petit défi consistant à coder le plus petit PE possible (avec un import) à partir de rien sous un éditeur Hexa. (Je n'est pas gagné,j'étais au environ des 350 octets...)

    Voilà l'image d'un des plus petits PE possible (avec un import), résultat: 275 octets.

    Petit PE

    Amicalement, Neitsa.

  5. #5
    Candidat au Club
    Inscrit en
    Avril 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 2
    Par défaut Mais ..
    Ce que je voulais dire justement, je sais que le loader ne voudras pas l'exécuter si il ne respecte pas un certains format. Alors est-il possible de le loader en mémoire et de faire un jump far ?

  6. #6
    Membre confirmé

    Inscrit en
    Août 2003
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 33
    Par défaut
    oui, c'est ce qu'on appelle un shellcode.

Discussions similaires

  1. Réponses: 8
    Dernier message: 02/04/2015, 14h51
  2. Réponses: 5
    Dernier message: 27/08/2012, 19h02
  3. conversion binaire-décimal sans utiliser le tableau
    Par ahmed doua dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 13/03/2006, 10h54
  4. [Binaire] Conversion decimal -> binaire sans vecteur
    Par yann1979 dans le forum Langage
    Réponses: 1
    Dernier message: 26/10/2005, 16h10
  5. Transformer un Binaire VB5 en binaire VB6 sans recompilation
    Par abelman dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 06/10/2005, 09h49

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