← retour aux outils back to tools

# bytecode-viewer

Visualiseur multi-décompilateur de bytecode Java et Android. Affiche simultanément la sortie de plusieurs décompilateurs (Procyon, CFR, FernFlower, Krakatau) pour recoupement. Multi-decompiler Java and Android bytecode viewer. Simultaneously shows output from multiple decompilers (Procyon, CFR, FernFlower, Krakatau) for cross-verification.

↗ https://github.com/Konloch/bytecode-viewer

## Overview

Bytecode Viewer (BCV) is a Java/Android reverse engineering tool that runs multiple decompilers simultaneously. You can view a class file through Procyon, CFR, FernFlower, and Krakatau at the same time — comparing outputs helps when one decompiler fails or produces inaccurate code. Supports APK, JAR, CLASS, and DEX files.

## Installation

    # Download JAR from GitHub releases
    # https://github.com/Konloch/bytecode-viewer/releases

Run

    java -jar BytecodeViewer.jar

Or Kali package

    sudo apt install bytecode-viewer

## Basic Usage

    # Launch GUI
    bytecode-viewer
    # Or:
    java -jar BytecodeViewer.jar

    # Open a file:
    # File → Open (or drag-and-drop)
    # Supports: .jar, .apk, .class, .dex, .zip, .war

CLI mode

    java -jar BytecodeViewer.jar -i input.apk -o output/ -decompiler cfr

## Key Features

    Multi-decompiler view:
      - Show same class with multiple decompilers side-by-side
      - FernFlower (IntelliJ's decompiler)
      - Procyon
      - CFR
      - Krakatau
      - JADX-core
      - JD-Core
      - Bytecode (raw bytecode view)
      - Smali (Android bytecode)

    Navigation:
      - Tree view of all classes/packages
      - Search across all decompiled code
      - Quick jump to class/method

    Editing:
      - Recompile modified classes back into JAR
      - APK rebuild after modification

## Opening Files

    # Drag and drop onto the window, or:
    # File → Open → select .apk/.jar/.class

    # For Android APKs:
    # BCV handles the full DEX → JAR → decompile pipeline
    # automatically

    # For encrypted/obfuscated JARs:
    # Some decompilers handle obfuscation better than others
    # Switch decompilers if one shows errors or empty output

## CLI Decompilation

Decompile to directory

    java -jar BytecodeViewer.jar \
      -i input.apk \
      -o /tmp/decompiled/ \
      -decompiler cfr

    # Available decompilers for CLI:
    # cfr, procyon, fernflower, jadx-core, jd-core

Decompile specific class

    java -jar BytecodeViewer.jar -i input.jar -o out/ -decompiler procyon

Recompile modified source

    java -jar BytecodeViewer.jar -recompile -i modified/ -o patched.jar

## APK Analysis Workflow

    # 1. Open APK in BCV
    # 2. Navigate to com/<company>/app/

    # Key classes to inspect:
    # - MainActivity, Application class
    # - Network/API classes (look for URLs, API keys)
    # - Crypto/auth classes
    # - BuildConfig (debug flags, server URLs, API keys)

    # 3. Search for strings:
    # Ctrl+F → search "http" → find hardcoded URLs
    # Search "password", "key", "token", "secret"

    # 4. Export findings via File → Save

## Comparison with JADX

    BCV pros:
      - Multiple decompilers simultaneously
      - Bytecode/Smali view alongside Java
      - APK rebuilding
      - More decompiler options

    JADX pros:
      - Better single-decompiler quality
      - Faster for large APKs
      - Better search
      - Actively maintained

    Best practice: use JADX first, BCV when JADX fails on specific classes

## Tips

- When one decompiler shows errors, switch to another — each handles edge cases differently
- The raw bytecode view is authoritative — decompiled Java is an approximation
- For obfuscated code, try Krakatau or CFR which handle some obfuscation better
- Use “Search in decompiled output” (Ctrl+F) to find hardcoded strings across all classes

Help / Man page

    java -jar BytecodeViewer.jar [options]

    GUI mode (no arguments): launches the graphical interface

    CLI mode:
      -i FILE           Input file (jar/apk/class/dex)
      -o DIR            Output directory
      -decompiler NAME  Decompiler: cfr, procyon, fernflower, jadx-core, jd-core
      -recompile        Recompile mode
      -help             Show help

## Vue d’ensemble

Bytecode Viewer (BCV) est un outil de rétro-ingénierie Java/Android qui exécute plusieurs décompilateurs simultanément. Vous pouvez voir un fichier class à travers Procyon, CFR, FernFlower et Krakatau en même temps : comparer les sorties aide quand un décompilateur échoue ou produit du code inexact. Supporte les fichiers APK, JAR, CLASS et DEX.

## Installation

    # Télécharger le JAR depuis les releases GitHub
    # https://github.com/Konloch/bytecode-viewer/releases

    # Lancer
    java -jar BytecodeViewer.jar

    # Ou le paquet Kali
    sudo apt install bytecode-viewer

## Utilisation de base

    # Lancer l'interface graphique
    bytecode-viewer
    # Ou :
    java -jar BytecodeViewer.jar

    # Ouvrir un fichier :
    # File → Open (ou glisser-déposer)
    # Supporte : .jar, .apk, .class, .dex, .zip, .war

    # Mode CLI
    java -jar BytecodeViewer.jar -i input.apk -o output/ -decompiler cfr

## Fonctionnalités clés

    Vue multi-décompilateur :
      - Afficher la même classe avec plusieurs décompilateurs côte à côte
      - FernFlower (le décompilateur d'IntelliJ)
      - Procyon
      - CFR
      - Krakatau
      - JADX-core
      - JD-Core
      - Bytecode (vue du bytecode brut)
      - Smali (bytecode Android)

    Navigation :
      - Vue en arbre de toutes les classes/packages
      - Recherche dans tout le code décompilé
      - Saut rapide vers une classe/méthode

    Édition :
      - Recompiler les classes modifiées en JAR
      - Reconstruction de l'APK après modification

## Ouvrir des fichiers

    # Glisser-déposer sur la fenêtre, ou :
    # File → Open → sélectionner .apk/.jar/.class

    # Pour les APK Android :
    # BCV gère automatiquement toute la chaîne DEX → JAR → décompilation

    # Pour les JAR chiffrés/obfusqués :
    # Certains décompilateurs gèrent mieux l'obfuscation que d'autres
    # Changez de décompilateur si l'un affiche des erreurs ou une sortie vide

## Décompilation en CLI

    # Décompiler vers un répertoire
    java -jar BytecodeViewer.jar \
      -i input.apk \
      -o /tmp/decompiled/ \
      -decompiler cfr

    # Décompilateurs disponibles en CLI :
    # cfr, procyon, fernflower, jadx-core, jd-core

    # Décompiler une classe spécifique
    java -jar BytecodeViewer.jar -i input.jar -o out/ -decompiler procyon

    # Recompiler la source modifiée
    java -jar BytecodeViewer.jar -recompile -i modified/ -o patched.jar

## Workflow d’analyse d’APK

    # 1. Ouvrir l'APK dans BCV
    # 2. Naviguer vers com/<company>/app/

    # Classes clés à inspecter :
    # - MainActivity, la classe Application
    # - Classes réseau/API (chercher URLs, clés d'API)
    # - Classes de crypto/auth
    # - BuildConfig (flags de debug, URLs serveur, clés d'API)

    # 3. Rechercher des chaînes :
    # Ctrl+F → rechercher "http" → trouver les URLs en dur
    # Rechercher "password", "key", "token", "secret"

    # 4. Exporter les découvertes via File → Save

## Comparaison avec JADX

    Avantages de BCV :
      - Plusieurs décompilateurs simultanément
      - Vue Bytecode/Smali à côté du Java
      - Reconstruction d'APK
      - Plus d'options de décompilateurs

    Avantages de JADX :
      - Meilleure qualité en décompilateur unique
      - Plus rapide sur les gros APK
      - Meilleure recherche
      - Activement maintenu

    Bonne pratique : utiliser JADX d'abord, BCV quand JADX échoue sur des classes précises

## Conseils

- Quand un décompilateur affiche des erreurs, passez à un autre : chacun gère les cas limites différemment
- La vue du bytecode brut fait foi : le Java décompilé est une approximation
- Pour du code obfusqué, essayez Krakatau ou CFR qui gèrent mieux une partie de l’obfuscation
- Utilisez “Search in decompiled output” (Ctrl+F) pour trouver des chaînes en dur dans toutes les classes

Aide / Page de manuel

    java -jar BytecodeViewer.jar [options]

    GUI mode (no arguments): launches the graphical interface

    CLI mode:
      -i FILE           Input file (jar/apk/class/dex)
      -o DIR            Output directory
      -decompiler NAME  Decompiler: cfr, procyon, fernflower, jadx-core, jd-core
      -recompile        Recompile mode
      -help             Show help