JEB Pro

Le désassemblage, la décompilation, le débogage et l’analyse du code et des documents

JEB Pro est la plateforme de rétro-ingénierie de PNF Software : elle désassemble, décompile, débogue et analyse code et documents.

À la main ou dans une chaîne d’analyse automatisée, de l’application Android au contrat Ethereum.


Description

PNF Software, installée dans la Silicon Valley, a été fondée en 2013 par Nicolas Falliere. Chercheur chez Symantec en 2010 et 2011, il a été le premier à publier la description détaillée de l’attaque de Stuxnet contre les automates Siemens S7.

JEB Pro décompile le bytecode Dalvik des applications Android comme le code machine x86, ARM, MIPS et RISC-V, les modules WebAssembly, les contrats Ethereum, les programmes d’automates S7 et jusqu’au code des noyaux GPU Nvidia (SASS). Il analyse aussi les documents PDF malveillants. Tout se scripte, en Python comme en Java, et l’outil fonctionne sans connexion à Internet.

Il intègre VIBRE, un assistant d’intelligence artificielle qui agit sur le projet ouvert à la demande de l’analyste. Le modèle de langage se choisit, y compris un modèle privé installé dans l’organisation, pour les réseaux isolés.


Décompilateur et débogueurs Android

La rétro-ingénierie d’APK malveillants et l’audit de sécurité

JEB réduit le temps, coûteux, de la rétro-ingénierie : il décompile des APK obfusqués, fait examiner le code Java et débogue des applications propriétaires en quelques minutes. Son moteur modulaire, couplé à une interface de bureau puissante, permet la refactorisation et l’écriture de scripts qui automatisent les tâches complexes.

Il mène l’analyse statique et dynamique de toute application Android, légitime ou malveillante, petite ou grande :

  • décompilation du code par le décompilateur Dalvik, APK multi-dex compris ;
  • refactorisation de l’analyse, pour déjouer le code obfusqué par les protecteurs d’applications ;
  • reconstruction des ressources et des fichiers XML obfusqués ;
  • débogage transparent du code Dalvik comme de tout code natif (Intel, ARM) ;
  • automatisation des tâches de rétro-ingénierie par des scripts, grâce à l’API.

Déobfuscation et optimiseurs

Du code Java décompilé dans JEB Pro, onglet Decompiled Java

Le décompilateur restitue avec précision et robustesse les applications Android et le bytecode Dalvik. Ses optimiseurs savent :

  • déchiffrer automatiquement les contenus ;
  • résoudre les appels d’API par réflexion ;
  • nettoyer de nombreux types de code obfusqué.

Les débogueurs Dalvik et natif analysent les applications en temps réel : ils permettent d’examiner le code et d’intercepter les API sensibles.

JEB Pro y ajoute des désobfuscateurs avancés : code « virtualisé » par les protecteurs, émulation du code natif JNI, extraction générique du code que l’application charge à l’exécution, et lecture des instantanés AOT des applications Flutter.

Refactorisation et annotation

Le renommage d’une méthode dans le code Dalvik d’une application Android, sous JEB Pro

Les résultats de l’analyse se refactorisent, s’annotent, se parcourent et se modifient. Les modules d’analyse permettent :

  • la refactorisation du code ;
  • la création de hiérarchies virtuelles, pour organiser le code fortement obfusqué ;
  • le nettoyage du code, par exemple en déchiffrant des contenus obfusqués ou en résolvant le code par réflexion.

API Java et Python

La documentation de l’interface IScript de l’API de JEB

L’API de JEB automatise les tâches de rétro-ingénierie. En Java ou en Python, l’utilisateur écrit scripts et plugins ; les plus avancés créent des modules d’analyse complets et des clients sans interface graphique. Les extensions du décompilateur acceptent des optimiseurs de représentation intermédiaire (IR) personnalisés, pour nettoyer plus encore le code obfusqué.


Décompilateur Intel x86

Les décompilateurs x86 et x86-64 s’attaquent aux programmes et aux logiciels malveillants 32 et 64 bits. Ils offrent :

  • un désassemblage enrichi : résolution des sites d’appel dynamiques, valeurs candidates des registres, références croisées dynamiques, etc. ;
  • la décompilation du code x86 et x86-64 en pseudo-code C ;
  • la reconstitution partielle des classes et la décompilation en C++ des programmes compilés avec Microsoft Visual C++ ;
  • des passes d’optimisation avancées contre le code protégé ou obfusqué ;
  • des bibliothèques de types Win32 et des signatures courantes, pour une analyse efficace des fichiers Windows ;
  • une couche interactive pour la refactorisation : définition de types, construction des cadres de pile, renommage, annotation, références croisées, etc. ;
  • une API complète et l’accès aux représentations intermédiaires (IR), pour des analyses de code avancées ou automatisées en Python ou en Java.

Décompilateur ARM

Les décompilateurs ARM 32 bits (AArch32, Thumb) et 64 bits (AArch64) servent à analyser les programmes malveillants écrits pour ARM et à auditer les systèmes embarqués complexes, avec :

  • un désassemblage enrichi, appels système compris ;
  • la décompilation en pseudo-code C ;
  • des optimisations qui déjouent le code protégé et nettoient l’obfuscation ;
  • la même couche interactive de refactorisation ;
  • des bibliothèques de types pour Linux, Android et Windows ;
  • une API complète, pour écrire des plugins au niveau de l’IR ou de l’arbre syntaxique et automatiser l’analyse.

Décompilateur MIPS

Le code MIPS d’un logiciel malveillant Mirai, désassemblé et décompilé dans JEB Pro

Le décompilateur MIPS vise les programmes embarqués et les logiciels malveillants MIPS. Conçu pour le code machine des processeurs et microcontrôleurs MIPS, il permet d’analyser des programmes malveillants et d’auditer des systèmes embarqués complexes : routeurs, décodeurs, objets connectés, etc.

Il offre :

  • le même désassemblage enrichi, appels système résolus ;
  • la décompilation du code MIPS 32 et 64 bits en pseudo-code C ;
  • une optimisation qui neutralise le code protégé ;
  • la couche interactive de refactorisation, cadres de pile compris ;
  • l’API complète, pour scripter l’analyse.

Décompilateur RISC-V

Le désassemblage RISC-V et le code décompilé côte à côte dans JEB Pro

Les modules RISC-V de JEB servent à la rétro-ingénierie des programmes et binaires RV32 et RV64, pour les analystes comme pour les auditeurs de sécurité.

Fonctionnalités propres aux plugins RISC-V :

  • fichiers objets : RISC-V dans les ELF Linux, les PE Windows ou du code sans en-tête (micrologiciels, par exemple) ;
  • désassembleur : RV32 et RV64, opcodes normaux et compressés, pour les extensions I (entiers), Zifencei, Zicsr, M (multiplication), A (opérations atomiques), F (flottants simple précision), D (flottants double précision) et C (opcodes compressés). RV128, RVE (embarqué) et les extensions plus « exotiques » (transactions mémoire, SIMD, vecteurs, etc.) ne sont pas prises en charge à ce jour ;
  • décompilation : opérations entières et générales (RVI), en 32 et 64 bits ; la décompilation des instructions flottantes (extensions F et D) est prévue ;
  • relocations : les relocations ELF courantes propres à RISC-V ; les stubs PLT standards sont gérés ;
  • conventions d’appel : ILP32D et LP64D, et des conventions personnalisées à définir ;
  • bibliothèques de types : celles d’ARM ou de MIPS pour Linux ou Windows, 32 ou 64 bits, se réutilisent.

Décompilateur WebAssembly

Le bytecode d’un module WebAssembly et sa décompilation en pseudo-C dans JEB Pro

Les plugins WebAssembly analysent les modules binaires wasm et apportent :

  • un désassemblage enrichi et l’analyse des modules binaires wasm ;
  • la décompilation du bytecode wasm en pseudo-C ;
  • des passes qui déjouent la protection et l’obfuscation du code ;
  • une couche interactive pour le typage, le renommage, les commentaires, les références croisées, etc. ;
  • un accès complet à l’API pour les scripts et les plugins.

JEB décompile tous les binaires wasm, y compris les contrats intelligents (Substrate/Polkadot, Cosmos, NEAR ou EOS/Antelope). Ses plugins prennent en charge la spécification WebAssembly 3.0.


Décompilateur Ethereum

Un contrat Ethereum dans JEB Pro : le code EVM et sa décompilation côte à côte

Le décompilateur Ethereum ramène le code des contrats intelligents EVM et des applications décentralisées (dApps) à un code de haut niveau proche de Solidity : un contrat fermé se comprend et s’audite sans son code source.

  • décompilation du code EVM en code proche de Solidity ;
  • détermination des méthodes publiques et privées du contrat, de leurs noms et de leurs prototypes, sans ABI ;
  • annotation des résultats, pour comprendre ce que fait le contrat ;
  • automatisation et scripts par l’API.

Décompilateur d’automates S7

Un bloc logique d’automate Siemens S7 décompilé en pseudo-C dans JEB Pro

L’extension S7 analyse les programmes des automates programmables Siemens Simatic S7-300 et S7-400, pour l’audit de sûreté comme pour la recherche en sécurité. Elle permet :

  • d’acquérir les blocs binaires S7, directement ou depuis une instance ouverte de l’éditeur Step 7 ;
  • d’analyser et d’explorer les blocs, métadonnées et interfaces comprises ;
  • de désassembler le bytecode MC7 en STL ;
  • de le décompiler en pseudo-code C ;
  • d’écrire des plugins par l’API, pour pousser l’analyse plus loin.

Les S7-1200 et S7-1500 ne sont pas pris en charge, et le décompilateur a encore des limites : minuteries et compteurs, opérations STL imbriquées, blocs multi-instances.


Analyseur de documents PDF

Le module PDF de JEB analyse les fichiers Adobe™ PDF malveillants. Il décompose et décode les fichiers pour donner accès à leurs composants internes, ressources et scripts, détecte les corruptions de structure et émet des notifications qui signalent les zones suspectes. Il s’emploie depuis le client de bureau ou depuis un client sans interface graphique, par exemple dans une pile d’analyse de fichiers ou une chaîne d’automatisation.

L’analyseur sert à la rétro-ingénierie manuelle ou automatique de documents de toutes tailles :

  • décomposition de la structure du PDF en une arborescence claire et navigable ;
  • prise en charge des fichiers corrompus et des flux complexes (encodages multiples, etc.) ;
  • plus de 20 notifications et alertes émises par l’analyseur, pour repérer les zones suspectes et se prononcer sur le fichier ;
  • extraction du JavaScript embarqué, même dans les cas les plus extrêmes ;
  • automatisation par l’API de JEB, pour des analyses en masse.

Éditions et licences

JEB se licencie à l’année, et chaque licence donne accès à la version la plus récente pendant toute sa durée.

JEB PRO
Tous les modules d’analyse : les décompilateurs de cette fiche, les débogueurs, l’analyseur PDF, l’assistant VIBRE, les extensions, les clients tiers et le travail hors ligne. Licence nominative.

JEB PRO FLOATING
La même édition en licence flottante : les postes de l’équipe se partagent un nombre de sièges.

JEB PRO OEM
L’intégration de JEB à un serveur ou à un produit, sous une licence dédiée.

JEB ANDROID
Les seuls modules Android, décompilateur et débogueur Dalvik compris, en licence annuelle ou mensuelle.