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-viewerOverview
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