Outils d'utilisateurs

Outils du Site


injection_elf

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

injection_elf [2012/07/06 21:21]
statl3r Restructuration, faute, note bas de page
injection_elf [2019/10/14 20:42] (Version actuelle)
M0N5T3R
Ligne 1: Ligne 1:
 +**Le PAD pour améliorer cette page :** https://pad.zenk-security.com/p/merci
 +
 +
 +
 +
 +
 ====== L'article n'est pas du tout fini. Ne pas le mettre dans le sommaire ! ====== ====== L'article n'est pas du tout fini. Ne pas le mettre dans le sommaire ! ======
 TODO TODO
Ligne 4: Ligne 10:
   * Expliquer différentes injections   * Expliquer différentes injections
  
-Cette article va vous présenter les différents techniques qui existent afin d'injecter du code de manière statique dans un fichier ELF, que ce soit sur architecture 32 bits ou 64 bits, sous une distribution GNU/Linux.+Cet article va vous présenter les différentes techniques qui existent afin d'injecter du code de manière statique dans un fichier ELF, que ce soit sur architecture 32 bits ou 64 bits, sous une distribution GNU/Linux.
  
 ====== 1. Le format ELF ====== ====== 1. Le format ELF ======
Ligne 17: Ligne 23:
 ===== Outils ===== ===== Outils =====
 Afin d'analyser un fichier ELF différents outils existent : Afin d'analyser un fichier ELF différents outils existent :
-  * **readelf** Permet d'afficher différents informations concernant un fichier ELF +  * **readelf** Permet d'afficher différentes informations concernant un fichier ELF 
-  * ** file ** Affiche différentes informations sur le fichier ELF +  * ** file ** Affiche différentes informations sur le fichier ELF 
-  * ** dumpelf ** Dump toutes les informations sur la structure d'un fichier ELF en équivalent d'une structure en C +  * ** dumpelf ** Dump toutes les informations sur la structure d'un fichier ELF en équivalent d'une structure en C 
-  * ** lddtree ** Montre l’arbre des dépendances d'un fichier ELF+  * ** lddtree ** Montre l’arbre des dépendances d'un fichier ELF
   * ** objdump **   * ** objdump **
   * ** scanelf **    * ** scanelf ** 
Ligne 28: Ligne 34:
  
 ===== En-tête ELF ===== ===== En-tête ELF =====
-Un fichier ELF va être constitué d'un en-tête et soit d'une table d'en-tête de programme ou d'une table des en-têtes de sections, ou alors des deux. Dans notre cas, il est nécessaire de posséder la table d'en-tête de programme, de toute manière celle-ci est obligatoire pour les exécutables. En effet, cette partie va contenir les informations sur les sections du programme qui vont comprendre le code qui sera mappé dans l'espace d'adressage du programme.+Un fichier ELF va être constitué d'un en-tête et soit d'une table d'en-tête de programme ou d'une table des en-têtes de sections, soit les deux. Dans notre cas, il est nécessaire de posséder la table d'en-tête de programme, celle-ci est obligatoire pour les exécutables. En effet, cette partie va contenir les informations sur les sections du programme qui vont comprendre le code qui sera mappé dans l'espace d'adressage du programme.
  
 Voici la représentation de l'en-tête ELF (32 bits) sous la forme d'une structure C : Voici la représentation de l'en-tête ELF (32 bits) sous la forme d'une structure C :
Ligne 84: Ligne 90:
 </file> </file>
  
-Le champ p_type va contenir le type du segment (LOAD, DYNAMIC, NOTE,...), nous ne nous intéresserons qu'au segment LOAD. Généralement, il y aura 2 segments LOAD, le premier ayant les flags (p_flags) Readable & Executable, qui va correspondre à la seciont .text (Le code du programme) et le second qui aura les flags Readable & Writable, qui va correspondre aux section .data (Les variables globales) et .bss (Les variables non initialisés). Bien entendu, cela n'est pas obligé, ils peuvent contenir d'autres sections en plus, et avec différents flags, il s'agit là du cas général.+Le champ p_type va contenir le type du segment (LOAD, DYNAMIC, NOTE,...), nous ne nous intéresserons qu'au segment LOAD. Généralement, il y aura 2 segments LOAD, le premier ayant les flags (p_flags) Readable & Executable, qui va correspondre à la section .text (Le code du programme) et le second qui aura les flags Readable & Writable, qui va correspondre aux sections .data (Les variables globales) et .bss (Les variables non initialisés). 
 +Bien entendu, cela n'est pas obligé, ils peuvent contenir d'autres sections en plus, et avec différents flags, il s'agit là du cas général.
  
 Les segments LOAD vont donc être chargés depuis le fichier pour être mappés au début du segment de la mémoire. Les segments LOAD vont donc être chargés depuis le fichier pour être mappés au début du segment de la mémoire.
injection_elf.1341602509.txt.gz · Dernière modification: 2017/04/09 15:33 (modification externe)