Skip to content

Instantly share code, notes, and snippets.

@n4sm
Created July 8, 2021 23:47
Show Gist options
  • Save n4sm/71ecaac0b7a7ef294987f939cf59ab16 to your computer and use it in GitHub Desktop.
Save n4sm/71ecaac0b7a7ef294987f939cf59ab16 to your computer and use it in GitHub Desktop.
Salut !
Etant donné que vous êtes beaucoup à me demander comment commencer le low level et le Reverse Engineering, je vais essayer de faire un petit résumé qui se base essentiellement sur ma propre expérience.
Tout d'abord je ne pense pas qu'il faille avoir des connaissances au préalable pour se lancer dans le low level, cependant il y a certaines notions qui sont indispensables dans le bas niveau et que l'on retrouve plus ou moins naturellement quand on a déjà codé en C ou mieux en assembleur. C'est donc pratique de savoir programmer dans un langage de bas niveau et c'est je pense la première étape pour envisager le low level.
Je conseille donc en premier lieu d'apprendre le C qui en plus d'être un langage que vous devrez très souvent lire, c'est aussi souvent des programmes en C que l'on commence à analyser quand on débute, de par la clarté du code assembleur généré.
**Pour apprendre le C je conseille ce cours écrit: https://zestedesavoir.com/tutoriels/755/le-langage-c-1/** (en français ce qui n'est pas toujours une bonne habitude à prendre).
Si vous êtes plus vidéos y'a les vidéos de formation vidéo: https://www.youtube.com/watch?v=90hGCMC3Chc&list=PLrSOXFDHBtfEh6PCE39HERGgbbaIHhy4j
Une fois que vous avez les bases en C le mieux c'est je pense d'attaquer avec l'assembleur, pour ce faire il y a de nos jours de plus en plus de ressources qui facilitent l'apprentissage de l'assembleur. Cependant c'est assez facile (je trouve) je savoir développer en assembleur sans vraiment comprendre les concepts sous jacents. C'est pourquoi je pense que il faut que l'apprentissage de l'assembleur se couple avec des notions de plus bas niveau que on ne retrouve pas dans le cours plus scolaires.
**Je conseille donc vivement ce cours en anglais qui en plus d'enseigner l'assembleur voit des concepts de bas niveau au delà des besoins de la programmation en assembleur: https://revers.engineering/applied-reverse-engineering-series/**
Une fois que vous avez appris l'assembleur, une bonne façon de se faire la main c'est de soit faire des crackmes, ou généralement de faire du RE pour bouffer un max d'assembleur et commencer à acquérir des automatismes.
Après c'est à vous de trouver ce que vous appréciez que ça soit du RE, du pwn, etc.
Le bas niveau, et plus particulièrement orienté sécurité, c'est un domaine passionnant qui paraît sans fin quand on débute, mais profitez bien de cet étonnement qui ne disparaît jamais vraiment (et c'est ça qui est fabuleux). Mais c'est certain que c'est loin d'être facile et que si vous voulez avancer il faudra pas mal s'accrocher au début.
Pour s'entrainer à la sécu' low level (RE / pwn):
- https://www.root-me.org/ => Plateforme de challenges généraliste avec du cracking (RE) et de l'app sys (pwn) notamment
- http://crackmes.one/ => Plateforme pour s'entrainer à faire des crackmes
- http://pwnable.kr/ & http://pwnable.tw/ => Plateformes pour faire du pwn
Cette introduction au monde du bas niveau peut être utile quand on commence car c'est normal de pas avoir de repères quant on débute mais au fur et à mesure que l'on avance on découvre par soi même d'autres manières d'approfondir ses connaissances, ça se fait de manière naturelle mais j'espere que vous avez déjà une idée un peu plus précise de comment commencer le bas niveau et que vous êtes moins perdu!
Pour d'autres ressources externes hésitez pas à check #reverse #pwnet #ring0.
Si vous cherchez des bouquins sympas dans le domaine perso' j'en ai acheté pas mal et je conseille:
- Understanding the linux kernel (peut être moins abordable pour un débutant)
- Practical Malware Analysis (fortement conseillé quand on début)
- Techniques de Hacking de Jon Erickson (en français, c'est le deuxième livre d'info que j'ai acheté)
- Practical Binary Analysis (pas adapté pour les débutants je pense, mais il est très cool c'est orienté DBI pas tant RE)
- Windows Internals Part 1 & 2 (une vraie pépite qui est assez adaptée pour le débutant qui a un minimum de bases)
J'en ai pas mal + pleins d'autres choses sur mon mega:
https://mega.nz/#F!WLY1iApS!fqafqQejFJEqUELa2bhFLQ
En esperant que ça en aidera certains !
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment