Petit guide de survie pour radare2
|
14-08-2014, 19h06
Message : #1
|
|
supersnail
Éleveur d'ornithorynques Messages : 1,609 Sujets : 71 Points: 465 Inscription : Jan 2012 |
Petit guide de survie pour radare2
I - Introduction
Radare2 est, comme certains le savent peut-être, un outil d'analyse de binaires/shellcode assez puissant, supportant beaucoup d'architectures (il supporte même le brainfuck !), et permettant l'analyse statique et dynamique (i.e. le debugging) de programmes (je n'ai malheureusement pas encore expérimenté ce point). Devant l'étendue des possibilités de radare2, je rédige donc ce petit guide permettant de démarrer en douceur et d'apprivoiser ce logiciel qui semble assez austère au premier abord. Je présupposerai que vous avez donc une machine tourant sur GNU/Linux, avec la dernière version git de radare2 d'installée, afin de débuter notre randonnée. II - Analysons notre premier programme Pour lancer le désassamblage d'un programme, on le via la ligne de commande, avec "r2 monprogramme". Notre victime ici sera "/bin/ls" (ou /usr/bin/ls selon votre distribution), on tapera donc donc ceci: Code : $ r2 /bin/ls Après un temps de chargement normalement court, vous devriez avoir dans votre terminal quelque chose comme ceci (avec des couleurs qui ne sont hélas pas affichées ici): Code : $ r2 /bin/ls On se retrouve donc nez-à-nez avec un "motd" aléatoire, ainsi qu'à un prompt attendant une action de notre part. Pour les plus courageux, vous pouvez toujours taper "?" pour avoir l'aide en anglais (et si vous êtes encore plus courageux vous arrêtez la lecture de ce petit guide pour partir seul à l'aventure :>), et pour les autres, on va lancer l'analyse de notre binaire simplement avec la commande af, qui aura pour fonction de lancer une analyse (comme IDA) du code et de permettre à radare2 de repérer les fonctions, chaînes de caractères, addresses et autre. Puis on va ensuite afficher le listing assembleur de notre fonction, et pour cela, on utilise la commande pdf (pour "print disassembly function") Nous avons donc quelque chose comme ceci normalement (les habitués du RE reconnaîtront un binaire x86_64): Code : [0x004048bf]> af Ce qui devrait donner comme résultat: Code : [0x004048bf]> pd 10 @section..text Code : [0x004048bf]> 0x004121d0 Code : [0x004048bf]> s 0x004121d0 Code : [0x004048bf]> s section..text Comme je trouve le nom "section..text" peu explicite, je vous propose de renommer cette fonction. On a deux options:
Si vous avez lu l'aide, vous avez sûrement remarqué que les commandes étaient "classées" par catégories, pour laquelle était assignée une lettre. Ainsi "p" donne accès aux commandes de formattage/affichage (et taper "p?" vous donnera l'aide de ces commandes), tandis que "S" donne accès aux commandes permettant de manipuler les sections du binaire (s'il y en a), et "a" regroupe les fonctions d'analyse. Chaque lettre (appelée "mnémonique") permet ainsi de parcourir l'arborescence des commandes radare2. A titre d'exercice, je vous laisse trouver à quoi correspond la commande "pxe" III - Le mode visuel / Mot de la fin Nous avons vu précédemment que l'on pouvait désassembler, et naviguer dans le code en tapant des commandes dans le prompt de radare2. Cependant, cela n'est pas forcément très pratique à utiliser, et peut rendre l'analyse relativement fastidieuse et désagréable; et ceux qui connaissent OllyDBG souhaiteraient sûrement pouvoir naviguer dans le code d'une manière similaire. Fort heureusement, radare2 propose un "visual mode", qui, toujours en ligne de commande, permet d'apporter une interface dont pourraient rêver les amateurs d'OllyDBG ! (et qui permet en plus de jouer à 2048, mais ce n'est pas le propos du guide :]). Pour entrer dans ce monde merveilleux, il suffit de taper "V" dans le prompt de radare2. Il est possible que vous aterrissiez alors sur un hexdump géant (ce qui est mon cas), dans ce cas n'hésitez pas à appuyer sur "p" jusqu'à ce que le listing revienne. Vous avez devant vos yeux ébahis le listing de la fonction "courante". De plus vous pouvez vous déplacer via les touches directionnelles, en scrollant à la souris, et octet par octet avec les touches "k" et "l". Pour entrer dans une fonction, il suffit de se positionner dessus puis d'appuyer sur "Entrée", et pour en sortir, taper "u". Pour aller à une addresse précise, pressez "o" et pour avoir l'aide, le traditionnel "?". A noter qu'on peut toujours saisir des commandes radare2, il suffit pour cela de la faire précéder d'un ":" (les connaisseurs de vi(m) reconnaîtront ). Voilà donc pour ce petit guide de survie, qui sera peut-être mis à jour ultérieurement, sous licence Beerware (oui j'aime les licences à la con). En annexe, je fournis un petit récapitulatif des commandes utiles: Code : Mode normal: Si vous remarquez des fautes/imprécisions ou trucs pas clairs, n'hésitez pas à poser la question ! En espérant que ce guide vous sera utile
Mon blog
Code : push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp "VIM est merveilleux" © supersnail |
|
14-08-2014, 19h30
Message : #2
|
|
gruik
gouteur de savon Messages : 757 Sujets : 44 Points: 482 Inscription : Oct 2012 |
RE: Petit guide de survie pour radare2
ça poutre
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure. Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau, L'Art poétique) |
|
15-08-2014, 18h46
Message : #3
|
|
thxer
:(){ :|:& };: Messages : 382 Sujets : 60 Points: 162 Inscription : Feb 2013 |
RE: Petit guide de survie pour radare2
Cool !
|
|
23-03-2016, 10h23
Message : #4
|
|
ZeR0-@bSoLu
Angel Of Byte Messages : 43 Sujets : 2 Points: 4 Inscription : Feb 2016 |
RE: Petit guide de survie pour radare2
Useful tool Merci pour cette intoduction
|
|
« Sujet précédent | Sujet suivant »
|
Sujets apparemment similaires… | |||||
Sujet | Auteur | Réponses | Affichages | Dernier message | |
Guide à l'usage des débutants en RE | Horgh | 3 | 303 |
22-10-2012, 19h40 Dernier message: Dobry |
Utilisateur(s) parcourant ce sujet : 2 visiteur(s)