URL: https://linuxfr.org/news/sortie-de-radare2-0-9-9-almost-there Title: Sortie de radare2 0.9.9 - Almost there Authors: jvoisin palm123, tuiu pol, Benoît Sibaud et patrick_g Date: 2015年06月07日T17:24:20+02:00 License: CC By-SA Tags: sécurité, sortie_version, radare, radare2, rétro-ingénierie, libreoffice et lennart_poettering Score: 58 Vous l'attendiez, elle est enfin arrivée, la nouvelle version de radare2, la 0.9.9, nom de code "Almost there"! Radare est un framework complet d'analyse et de désassemblage de binaires. Plutôt que de vous inviter à lire [chaque commit](https://github.com/radare/radare2/commits/master), voici un résumé des nouveautés dans la seconde partie. ---- [La nouvelle originale](http://radare.today/radare-0-9-9/) [Le site officiel](http://radare.org/r/) [Le changelog détaillé](http://rada.re/get/changelog2-0.9.9) ---- Quelques nombres ================ Grâce à plus de 50 contributeurs sur environ 1700 commits, voici ce qui a changé : ```bash $ git checkout 0.9.9 && git diff 0.9.8 --shortstat 839 files changed, 156490 insertions(+), 18885 deletions(-) ``` Console ======= La meilleure manière d'utiliser radare2, c'est à travers son shell. C'est pourquoi l'équipe a passé beaucoup de temps à la polir. Les utilisateurs sous Windows seront ravis d'apprendre que radare2 [fonctionne](https://www.youtube.com/watch?v=pnZRsmY6xsw) maintenant sans soucis sur leur plateforme, et atteint presque la parité en matière de fonctionnalités par rapport aux **vrais** systèmes d'exploitation, avec d'incroyables nouveautés comme le support des touches fléchées, ou encore du _`^c`_! Grâce à un contributeur [fan]( https://gist.github.com/XVilka/8346728 ) de couleurs, radare2 supporte maintenant la norme Truecolor, vous permettant de définir un thème visuel en choisissant parmi 16,777,216 couleurs! Parmi la pile d'améliorations, on peut également trouver deux nouvelles variables, _scr.wheelspeed_ et _scr.responsive_ qui améliorent la navigation. Il est de notoriété publique que la courbe d'apprentissage de radare2 est ~~affreuse~~ un peu raide. La bonne nouvelle, c'est que l'équipe a vérifié que chaque commande avait sa documentation (il suffit d'ajouter `?` à la fin d'une commande pour avoir des informations à son sujet). Fini les commandes énigmatiques ! Nouvelles architectures ======================= i4004 ----- Revenons, si vous le voulez bien, en 1971. À cette époque, Intel sortait le premier microprocesseur programmable, sous le nom de [i4004](https://en.wikipedia.org/wiki/Intel_4004).  Processeur ultra-rapide, du haut de ses 740kHz, capable d'adresser directement 640 bytes de RAM, c'était une technologie de pointe à son époque, et maintenant, 34 ans plus tard, radare2 le supporte enfin. LH5801 ------ Maintenant que nous avons remonté le temps, connaissez-vous le [LH5801](http://www.old-computers.com/museum/computer.asp?st=1&c=965) ?  C'est un processeur 8bit qui fut utilisé dans le premier ordinateur de poche ! z80 --- Le précédent désassembleur [z80](https://en.wikipedia.org/wiki/Zilog_Z80) était sous licence GPL, avait des commentaires en allemand (comme [LibreOffice](https://bugs.documentfoundation.org/show_bug.cgi?id=39468) et [systemd](https://plus.google.com/+LennartPoetteringTheOneAndOnly/posts/VUzeRLf5g5m) !). Le nouveau est plus propre, plus correct, 75% plus petit, et sous licence LGPL ! Que demander de plus. Pebble ------ Si vous avez une [montre Pebble](https://getpebble.com/), il est [maintenant](https://github.com/radare/radare2/commit/e35d55e18ab2bfe1d38b4a9398222531982f070a) possible de déboguer ses applications avec radare2. Amélioration du moteur d'analyse ================================ Les méthodes d'analyse de type *nop-skip*, de détection de variables locales, d'utilisation du PLT ELF et du mode Thumb sont maintenant supportées sur les architectures ARM et ARM64. Les drapeaux locaux et les labels de fonctions sont également activés par défaut pour l’intégralité des architectures. Les informations de relocation de type PE sont maintenant affichées de manière plus claire :   Un exemple de support (basique) de l'architecture  :  En parlant d'analyse, saurez-vous [trouver]( https://twitter.com/radareorg/status/580289536892252160 ) les améliorations sur l'architecture Dalvik ? Changements au niveau des commandes =================================== Quelques commandes ont changé, non pas pour le plaisir d’embêter les utilisateurs, mais au contraire pour les rendre plus faciles à appréhender. Si vous remarquez un changement désagréable dans vos habitudes, n'hésitez pas à ouvrir un rapport de bug à ce sujet. Il y a également eu quelques ajouts, surtout au niveau des sous-commandes de type *p*, saurez-vous les trouver ? ;) Corrections de bugs =================== La suite de tests du projet devient de plus en plus importante, mais ça ne l’empêche pas de se [lancer](https://travis-ci.org/radare/radare2) avec diligence sur chaque nouveau commit, évitant les régressions, auparavant si nombreuses. Le nombre de défauts remontés par coverity a été réduit de plus de 75%, abaissant leur nombre à moins de 150. On peut également noter que des bugs remontés par [shellcheck](http://www.shellcheck.net/), [cppcheck](http://cppcheck.sourceforge.net/), [valgrind](http://valgrind.org/) et compagnie ont également été exterminés ! ESIL ==== Comment oublier [ESIL](https://github.com/radare/radare2/wiki/esil), le [langage de représentation intermédiaire](https://fr.wikipedia.org/wiki/Langage_interm%C3%A9diaire) du projet. Un contributeur féru de gameboy s'est acharné à en développer les spécifications, et à vouloir émuler complètement sa plateforme préférée avec; pendant que d'autres ont préféré se concentrer sur l'architecture x86, MIPS ou encore ARM. L'émulation et l'analyse avancée se rapprochent de plus en plus ! Deux nouveau contributeurs (qui sont maintenant des étudiants GSoC sous l'ombrelle du projet) ont repectivement ajouté, pour leur première contribution, un transpileur ESIL vers [REIL](http://blog.zynamics.com/2010/03/07/the-reil-language-part-i/), ainsi qu'une implémentation d'ESIL pour l'architecture [8051](https://github.com/radare/radare2/blob/master/libr/anal/p/anal_8051.c). Par mal pour une première contribution. Recherche ========= Le moteur de recherche de [gadgets ROP](https://en.wikipedia.org/wiki/Return-oriented_programming) supporte maintenant les expressions régulières ! Il convient de noter que le caractère de séparation n'est plus `,` mais `;`, ce qui force l'utilisation de guillemets doubles autour de la commande, `;` étant normalement utilisé pour séparer les commandes dans radare2. Certaines personnes utilisent radare2 au lieu de [binwalk](http://binwalk.org/) pour lancer libmagic sur des fichiers de format inconnu. C'est pourquoi la commande `/m` a été optimisée en vitesse et efficacité. Graphes ASCII ============= Radare2 supporte depuis quelques temps les graphes ASCII dans la console; avec cette nouvelle mouture, les couleurs font leur apparition :  Elles sont bien évidement supportées dans les minigraphs :  Un nouveau rendu des arêtes de graphes a fait son apparition, et comme l'équipe aimait les deux, plutôt que de trancher, elles ont été intégrées ensemble, et il est possible de passer de l'une à l'autre avec la touche `e`.  Enseignement ============ Radare2 n'est pas uniquement utilisé pour faire de la retro-ingénierie sur des architectures étranges, ou écrire des exploits tordus, il sert également à enseigner l'informatique ! Radare2 vient avec une base de plus de 250 fortunes, et bien que les développeurs soient convaincus que toutes sont drôles, certaines sont de mauvais goût, voire franchement inappropriées. C'est pourquoi l'option `cfg.fortunetype` a été introduit. Il permet de filtrer les fortunes selon trois critères (qui peuvent se combiner) : _tips_, _nsfw_ et _fun_. Elle devrait mettre fin aux moments de gêne et d’embarras durant les présentations ;) Tout le monde ne peut pas se targuer d'être un expert dans d'obscures architectures exotiques, c'est pourquoi radare2 a une option `asm.pseudo`, permettant d'afficher les instructions dans une représentation plus évidente. Il est également possible d'essayer le proto-pre-alpha décompilateur à l'aide de la commande `pdc`  Débogueur ========= WinDBG ------ Un contributeur patient a ajouté le support de WinDBG, le débogueur ring-0 de Windows. Ce qui signifie qu'il est maintenant non seulement possible de tritouiller des drivers avec radare2, mais également des machines virtuelles ! Imaginez, arrêter l’exécution d'une machine Windows, modifier des instructions, et reprendre l'execution pas-à-pas, depuis radare2...  Tracing ------- Il est maintenant possible d'effectuer du tracing dans radare2, les instructions se décalant davantage à chaque utilisation :  Web interface ============= L'interface web de radare2 supporte maintenant: - une minimap, à la IDA - des graphes interactifs - encore plus de menus contextuels - un support des projets - une vue hexadécimale - une édition de types primitifs - un renommage des variables - un support des debuggers - du tracing Le tout, à une vitesse folle !  r2pipe ====== Comme le développement de radare2 avance à bon train, au lieu d'utiliser des bindings traditionnels, la méthode recommandée pour appeler radare2 depuis un autre langage que le C est d'utiliser r2pipe, qui est grosso-modo un wrapper autour du shell. En parlant de bindings, saviez-vous qu'en ajoutant `j` à chaque commande, radare2 retournera les informations sous forme de JSON ? Si vous vous amusez à parser les sorties de radare2 à la main au lieu d'utiliser le JSON, vous risquez de passer _un mauvais quart d'heure_. Actuellement, nous supportons Python (2 et 3), Go et NodeJS; mais aussi D, C#, Java, Ruby, Perl, vala, NewList, Shellscript, Rust, ... Les packages pour r2pipe sont disponibles via `pip` pour Python, `gem` pour Ruby et `npm` pour Node.js. Il s'agit d'une simple interface permettant d'envoyer des commandes r2 à travers un pipe, une connection tcp ou http, et de recevoir le résultat sous forme de string, ou comme évoqué précédemment, de JSON. Il est intéressant de noter qu'il est également possible d’appeler des scripts r2pipe directement depuis de shell de radare2, grâce à la commande `.`, un peu comme dans bash. Misc ==== La plupart des développeurs de radare2 utilisent [vim](http://emacs.rehab/), mais certains utilisent [emacs](https://www.gnu.org/software/emacs/), c'est pourquoi il est maintenant possible d'utiliser les raccourcis vim **et** emacs dans radare2! Le projet possède (encore) un nouvel assembleur x86, plus efficace, plus court, et plus joli ! Build ----- Le temps de build a été significativement réduit (près de 30% sur Windows !); c'est pourquoi il ne faut maintenant plus que [3m37s](https://twitter.com/radareorg/status/588124975976095745) pour compiler la version git de radare2 sur un [UbuntuPhone](http://www.ubuntu.com/phone/devices). TV -- Saviez-vous que radare2 a été aperçu sur une chaîne de télévision nationale (espagnole) grâce à [Gabriel Gonzalez](https://twitter.com/GabrielGonzalez) d'[IOActive](https://twitter.com/IOActive). À propos, si vous utilisez radare2, n'hésitez pas à vous [signaler](http://radare.today/who-uses-r2/) ;) Captures d'écran bonus ======================  Comparaison des deux styles de graphes  Le logo de radare2, dans radare2, sous forme de stéréogramme  Évidement que radare2 tourne sur les Mazda. Oui, Mazda, les voitures.