Menu

Introduction à gdb

Introduction à gdb

Que le programmeur qui n’a jamais mis des printf, var_dump, echo, print, System.out, console.log, cout plein son code pour savoir d’où venait un bug se dénonce. Que le programmeur qui ne s’est jamais arraché les cheveux pour un programme qui plantait violemment sans crier garde me jette la pierre (C’est une expression, hein !). Heureusement, il existe pléthore de débogueurs (debuggers), libres ou non, dont un qui est particulièrement reconnu, le débogueur de GNU nommé GDB (GNU Project Debugger), que nous allons introduire dans cette introduction.


Lire la suite →

Assembleur - Notions de base

Assembleur - Notions de base

Salut tout le monde, voici un nouvel article qui va permettre, je pense, d’éclaircir bon nombre de notions que j’ai déjà abordées dans mes articles précédents, et qui permettront également de faciliter la compréhension des articles à venir.

Cet article a un but modeste : Comprendre la sortie d’un disass main sur un programme relativement simple (Mais si ! vous savez, cette commande dans gdb qui permet de désassembler - i.e. produire le code assembleur - un binaire)


Lire la suite →

Buffer Overflow

Buffer Overflow

Nous allons ici expliquer ce qui se cache derrière la notion de buffer overflow, avant de donner deux exemples différents d’exploitation dans ce tuto “buffer overflow”:

  1. Cas d’un buffer qui alloue suffisamment d’espace pour contenir un shellcode avant l’adresse de retour sur la pile
  2. Cas d’un buffer trop petit pour contenir un shellcode avant l’adresse de retour sur la pile

Lire la suite →

Pointeurs de fonction en C

Pointeurs de fonction en C

Voici un petit mémo sur les pointeurs de fonction. Pour rappel, un pointeur est une variable qui contient une adresse mémoire d’une donnée. La donnée peut être un int, un float, un tableau, etc. Mais ça peut aussi être l’adresse d’une fonction. Mais qu’est ce que ça veut dire que l’adresse d’une fonction ?


Lire la suite →

L'espace à notre échelle

L'espace à notre échelle

L’espace, c’est grand, très grand. Dès qu’on commence à parler d’univers, on arrive rapidement à parler en années-lumières, en millions, milliards, et plus. Mais finalement, on ne se rend compte de rien, on ne sait pas se représenter ça. Ca veut dire quoi 15 milliards d’années lumière ? Et d’ailleurs, c’est quoi une année lumière ? Pour avoir une idée plus précise, il suffit de diviser les distances par un milliard, et on se rend rapidement compte de tout ça. Pour information, une année lumière, c’est une distance qui vaut à la distance parcourue par la lumière en une année, ou 9461 milliards de kilomètres.


Lire la suite →

Fonctionnement de la pile

Fonctionnement de la pile

La pile (dont on a parlé dans l’article sur la gestion de la mémoire a une structure LIFO (Last In, First Out).


Lire la suite →

Gestion de la mémoire

Gestion de la mémoire

Aujourd’hui, je vais tenter de rassembler tout ce que j’ai pu comprendre sur la gestion de la mémoire lors de l’exécution d’un programme. Cet article est écrit en vu de comprendre l’exploitation de certaines failles applicatives, telles que le buffer overflow, le heap overflow ou encore la format string, failles que je décrirai dans les prochains articles.


Lire la suite →

Libre, opensource & freeware

Libre, opensource & freeware

Logiciel libre, open source, freeware, ça vous dit quelque chose ? Sûrement, car ces termes sont au cœur des technologies actuelles et sont enracinés dans le marché du logiciel.

Mais alors quelles sont les différences ? Tout ça, ça veut dire quoi, en fait ?


Lire la suite →