URL: https://linuxfr.org/news/sortie-de-radare-0-9-8 Title: Sortie de radare 0.9.8 Authors: jvoisin rootix, palm123, Benoît Sibaud et ZeroHeure Date: 2014年11月14日T18:26:37+01:00 License: CC By-SA Tags: dbug et radare Score: 76 Radare2, déjà évoqué sur LinuxFR.org (cf [Sortie de radare2 0.9.6]( https://linuxfr.org/news/sortie-de-radare2-0-9-6 )), vient de sortir en version 0.9.8. Radare est un cadriciel *complet* pour ~~jouer avec~~ analyser des fichiers binaires: assembleurs, désassembleurs, moteurs d'analyse, ... Bref, c'est complet et touffu. Et cette nouvelle mouture apporte son lot de bonheur ! ![theme](http://i.imgur.com/gcSBfPw.png) ---- [Sources](http://rada.re/get/radare2-0.9.8.tar.xz) [Bindings](http://rada.re/get/radare2-bindings-0.9.8.tar.xz) [SDB](http://rada.re/get/sdb-0.9.2.tar.gz) [Dépôt git](https://github.com/radare/radare2) [Blog](http://radare.today) [Site officiel](http://radare.org) [Billet de sortie original](http://radare.today/radare-0-9-8/) ---- # Chiffres En termes de chiffres, il s'agit de : - plus de 2500 commits ; - plus de 120 nouveaux *idlers* sur [#radare]( irc://freenode.net/radare ) (soit plus de 300% d'augmentation) ; - environ 60 [contributeurs]( https://github.com/radare/radare2/pulse ) ; - 13 thèmes de couleur ; - 8 mois de gestation ; - 1 [grand chef]( https://twitter.com/trufae ) ; - une [homepage]( http://www.radare.org ) ; - un numéro de version : 0.9.8 ; - une **[bande son]( http://radare.org/get/Neuroflip-BabylonRocket-OriginalMixForR2.mp3 )** par [neuroflip]( https://twitter.com/neuroflip ) ! Il est bien sûr possible d'aller éplucher le [changelog détaillé]( http://rada.re/get/changelog2-0.9.8 ) à la main, mais c'est plus sympa de lire un billet avec les améliorations et nouveautés alléchantes : # Nouvelles plates-formes r2-0.9.8 est maintenant compilable pour [Android L]( https://en.wikipedia.org/wiki/Android_Lollipop ), à savoir deux nouvelles architectures, mips64 et aarch64. La compilation croisée pour les appareils tournant sous iOS étant maintenant supportée, plus besoin de compiler nativement sur une machine jailbreakée. Les utilisateurs d'[Haiku]( http://haiku-os.org/ ) et de Windows 7 seront ravis d'apprendre qu'ils ne sont pas en reste, et que leurs plates-formes sont nativement supportées également. # Nouvelles architectures Plusieurs architectures ont été ajoutées : - un meilleur support de Java. Ok, ça n'est pas une nouvelle architecture, mais son support a été grandement amélioré ! - cr16 et msp430, principalement utilisées dans l'embarqué ; - il est maintenant possible de charger (et de modifier !) des ROM de Nintendo DS ; - tms320 (c55x, c55x+, et plus encore à venir), utilisée dans certain BIOS ; - m68k, ce qui a permis entre autres choses de reverser des morceaux de [Street Fighter]( http://pof.eslack.org/2014/04/08/hacking-super-street-fighter-ii-turbo-part-2/ ) ; - Spc700, le chips chargé du son dans la Super NES ; - Propeller ; - et toutes celles apportées par Capstone qui n'étaient pas encore supportées, comme SystemZ. # Un meilleur débogueur Radare2 possède à nouveau un débogueur natif pour Windows (uniquement en 32 bit pour l'instant), supportant les points d'arrêts matériel ! Beaucoup de choses se sont passées du coté de l'intégration avec GDB, qui fonctionne maintenant sur X86, MIPS et ARM pour qemu et gdb-server. # Intégration de SDB [SDB]( https://github.com/radare/sdb ) est un système clef-valeur (un peu comme memcached) en cours d'intégration dans radare2. Il permet de simplifier le code, et d'améliorer les performances de manière générale. Il est possible de jouer avec, grâce à la commande `k`. ![SDB](http://i.imgur.com/MF3Ne7e.png) # Capstone Le projet utilise maintenant [capstone]( http://www.capstone-engine.org/ ) pour désassembler plusieurs architectures, ce qui a pour effet de simplifier la maintenance et d’apporter un support complet de choses un peu ~~tordues~~ alambiquées, comme AVX ou les instructions FPU. # Qualité logicielle Grâce à [coverity]( https://www.coverity.com/ ), beaucoup de bugs ont été corrigés. L'utilisation d'[ASAN]( https://code.google.com/p/address-sanitizer/ ), [Valgrind]( http://valgrind.org/ ), [Jenkins]( http://ci.rada.re/ ) et d'une [suite de tests]( https://github.com/radare/radare2-regressions ) complète a également tiré la qualité vers le haut. Beaucoup de warnings et de corruptions mémoire ont été détectées et corrigées grâce à l'usage de différents fuzzers, comme ([radamsa]( https://code.google.com/p/ouspg/wiki/Radamsa ), [melkor]( http://blog.ioactive.com/2014/11/elf-parsing-bugs-by-example-with-melkor.html ), [nightmare]( https://github.com/joxeankoret/nightmare ), [zzuf]( http://caca.zoy.org/wiki/zzuf ), ...), ce qui permet maintenant à radare2 d'être bien plus robuste sur des fichiers *exotiques*. # DWARF Un des contributeurs a passé beaucoup de temps à ajouter le support des données [DWARF]( http://dwarfstd.org/ ), permettant maintenant à tout le monde de déboguer ses binaires ELF (presque) sans avoir à lire de l'assembleur ! ![DWARF](https://i.imgur.com/5ZNWxh2.png) # ESIL [ESIL]( https://github.com/radare/radare2/wiki/ESIL ) signifie *Evaluable Strings Intermedate Language*. Il s'agit d'une représentation de chaque opcode, dans le but d'effectuer une émulation complète, pour améliorer l'analyse. Avec *ESIL*, il est maintenant possible de : ![ESIL](http://i.imgur.com/LowEE1Q.png) * déboguer des applications écrites en Brainfuck ; * partiellement émuler les architectures suivantes : Gameboy, X86, ARM et MIPS ; * définir des points d’arrêt conditionnels ; * utiliser des expressions de recherche complexes ; * implémenter des moteurs d'analyse indépendants des instructions bas-niveau sous-jacentes. # Exploitation Radare2 vise également à être utile aux auteurs d'exploits ; il est donc maintenant possible de : - analyser des adresses spécifiques avec la commande `ai` ; - déréférencer et manipuler les résultats de registres ou de la mémoire avec `drr/pxr`, à la [PEDA]( https://github.com/longld/peda ) ; - recherche des [gadgets ROP]( https://en.wikipedia.org/wiki/Return-oriented_programming ) avec `/R` - détecter certaines protections logicielles avec `i` ; - générer des patterns de [De Bruijn]( http://www.offensive-security.com/metasploit-unleashed/Writing_An_Exploit ) ; - utiliser la variable `search.in` pour spécifier où mener la recherche, comme par exemple, la pile, le tas, ou les pages exécutables. ![Exploitation](https://i.imgur.com/JzhTCBQ.png) # Graphes en ASCII art Radare2 n'ayant pas (encore) de GUI officielle, la (fameuse) vue en graphe d'IDA a été implémentée en ASCII art ! Il est possible de la faire apparaître avec `V` en mode visuel, en plaçant le curseur sur une fonction déjà analysée. Cerise sur le gâteau, c'est une visualisation interactive, et utilisable en mode debug ! Les callgraphs sont disponibles avec `VVV`. Évidement, les graphes de type Graphviz, HTML5 et JSON sont toujours là, mais ne sont plus utilisés par défaut. ![Graphes](https://i.imgur.com/KlTN1NH.png) Pour l'occasion, le mode visuel a été grandement amélioré pour fournir une meilleure gestion du curseur, un navigateur des références croisées avec `x` et `X` ainsi que le support de la molette de souris. # RSoC Comme le projet n'a pas été accepté par Google pour un [GSoC]( https://developers.google.com/open-source/soc/ ), il a lancé son propre *Summer of Code*, le [RSoC]( http://rada.re/rsoc/ ), qui a porté ses fruits : de nouveaux contributeurs, plus de fonctionnalités, de tests et d'utilisateurs : ## Support de patrons [Skia]( http://libskia.so/ ) a fait du beau travail en implémentant le support de patrons à la 010Editor. Il est maintenant possible, avec `r2 -nn` d'analyser les en-têtes de fichiers avec `pf.`, `pxa` et autres commandes associées. ## Support de FLIRT et de YARA [jfrankowski]( http://failhard.org/ ) a lui aussi apporté sa pierre à l’édifice en améliorant le support de [yara]( https://plusvic.github.io/yara/ ) dans radare2, ainsi qu'en ajoutant la possibilité d'utiliser des signatures de type [FLIRT]( https://www.hex-rays.com/products/ida/tech/flirt/in_depth.shtml ) ! Actuellement, radare2 n'est pas capable de créer ces signatures, donc, si vous cherchez quoi implémenter pour une première contribution, vous savez quoi faire ;) ## PDB support [inisider]( https://github.com/inisider ) a implémenté une bibliothèque indépendante pour gérer le format [PDB]( https://support.microsoft.com/kb/121366 ), puis l'a intégrée dans radare2. C'est un peu l'équivalent des informations de débug DWARF, mais pour les binaires Windows. # Intégration et bindings Le script d'importation d'IDA vers radare2 a été grandement amélioré. [Duktape]( http://duktape.org/index.html ) est maintenant supporté, ce qui permet d'écrire des programmes pouvant s'interfacer avec radare2 en JavaScript, et même pourquoi pas de les faire tourner sur du NodeJS. Ceci vient s'ajouter aux bindings C, Python et Lua déjà existants. # Documentation et publicité Un des reproches les plus couramment faits à radare2 est son manque de documentation et de didacticiels. Nous sommes en train d'y remédier, que ce soit avec le [radare2 book]( https://maijin.github.io/radare2book/ ), un [blog]( http://radare.today ), ainsi qu'en donnant des [conférences]( http://radare.today/we-were-at-hack-lu-2014/ ) et des [workshops]( http://radare.today/trainings-and-translations/ ). # Analyse inforensique Le support de `libmagic` a été amélioré à tel point que radare2 peut maintenant remplacer certaines fonctionnalités de [binwalk]( http://binwalk.org/ ), par exemple l'analyse des firmwares de routeurs. Les commandes permettant la recherche des données ont également été retravaillées, facilitant la recherche de données complexes. Si vous aimez jouer avec des gros ensembles de données, vous allez aimer la commander `rabin2 -zzz` qui permet de lister sur la sortie standard toutes les chaînes de texte trouvées dans un fichier, sans faire de copie en mémoire. # R2Pipe et JSON Depuis cette version, il est possible d'utiliser une version simple des bindings : *r2pipe*, qui se contente en fait de recevoir des commandes radare2 d'un coté, et de sortir le résultat de l'autre, au lieu de forcer le développeur à appeler les fonctions une par une. Vu que (presque) toutes les commandes peuvent sortir du JSON pour peu qu'on leur ajoute un `j` à la fin, il est facile d'implémenter des interfaces et des modules (surtout en JavaScript). # Bonus Comme les contributeurs de radare2 sont des petits malins, ils ont également : - ajouté une version ASCII du jeu [2048]( https://en.wikipedia.org/wiki/2048_%28video_game%29 ) ; - ajouté une tripotée de thèmes ; - coloré l'aide intégrée (`?`) ; - amélioré le moteur d'analyse.

AltStyle によって変換されたページ (->オリジナル) /