awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
fesh0r avatar

fesh0r/fernflower

0
View on GitHub↗
4,308 stars·726 forks·Java·Apache-2.0·10 viewsgithub.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine↗

Fernflower

Fernflower is a Java bytecode decompiler and reverse engineering tool. It transforms compiled Java class files back into human-readable Java source code to reconstruct original program logic and variable names.

The tool functions as a command line bytecode processor capable of batch processing Java archives and class files. It specifically handles obfuscated code analysis by renaming ambiguous identifiers and resolving naming conflicts to make the resulting source code easier to follow.

The system employs static analysis to convert bytecode to source, utilizing debug information extraction to restore local variable names. It reconstructs program structures through control flow graph analysis, type inference, and the generation of an abstract syntax tree.

Features

  • Bytecode Decompilers - Functions as a bytecode decompiler that transforms compiled class files back into human-readable Java source code.
  • Bytecode Decompilers - A process for transforming bytecode from class files, archives, or packages back into human-readable source code.
  • Java Bytecode Decompilers - Transforms compiled Java class files back into human-readable Java source code for reverse engineering.
  • Java Reverse Engineering Tools - Provides specialized utilities for translating compiled Java bytecode back into high-level source code for analysis.
  • Bytecode Debug Attribute Extraction - Extracts local variable names and line numbers from bytecode debug attributes to restore original source naming.
  • Debug-Based Variable Name Recovery - Restores original parameter and local variable names using debug information stored within the bytecode.
  • Bytecode-to-AST Reconstruction - Implements the reconstruction of bytecode into abstract syntax trees to recover high-level Java source structures.
  • Structured Control-Flow Reconstruction - Reconstructs structured loops and conditionals from arbitrary control-flow graphs extracted from bytecode.
  • Type Inference Engines - Employs a type inference engine to determine expression data types from bytecode signatures and class hierarchies.
  • Decompilation Command Line Interfaces - Provides a command line interface for batch processing Java archives and class files into source code.
  • Deobfuscation Identifier Resolution - Resolves naming conflicts by generating unique synthetic identifiers for obfuscated or missing member names.
  • Obfuscated Code Analysis - Analyzes and cleans up obfuscated Java bytecode by normalizing ambiguous identifiers to make logic readable.
  • Obfuscated Identifier Normalization - Normalizes obfuscated identifiers by replacing ambiguous names with unique, consistent identifiers.
  • Legacy Code Recovery - Facilitates the recovery of original source code from compiled archives when development files are lost.
  • Decompilers - Listed in the “Decompilers” section of the Awesome J2me awesome list.
  • Reverse Engineering Tools - Analytical Java decompiler for reverse engineering.

Star history

Star history chart for fesh0r/fernflowerStar history chart for fesh0r/fernflower

How this analysis was created: This summary and feature list are AI-generated from collected project material and can contain mistakes. Stars, license and language are imported from GitHub. Inclusion does not mean that we have tested or audited this project. Check the source documentation for any feature you depend on. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does fesh0r/fernflower do?

Fernflower is a Java bytecode decompiler and reverse engineering tool. It transforms compiled Java class files back into human-readable Java source code to reconstruct original program logic and variable names.

What are the main features of fesh0r/fernflower?

The main features of fesh0r/fernflower are: Bytecode Decompilers, Java Bytecode Decompilers, Java Reverse Engineering Tools, Bytecode Debug Attribute Extraction, Debug-Based Variable Name Recovery, Bytecode-to-AST Reconstruction, Structured Control-Flow Reconstruction, Type Inference Engines.

Which projects share features with fesh0r/fernflower?

Projects with overlapping indexed features include: jetbrains/fernflower — Fernflower is a Java bytecode decompiler designed to convert compiled Java class files back into human-readable source… rocky/python-uncompyle6 — python-uncompyle6 is a Python bytecode decompiler and reverse engineering tool designed to convert compiled bytecode… java-decompiler/jd-gui — This project is a desktop application designed for the reverse engineering and inspection of compiled Java code. It… zrax/pycdc — pycdc is a reverse engineering toolset that decompiles and disassembles compiled Python bytecode files back into… androguard/androguard — Reverse engineering and pentesting for Android applications. col-e/recaf — Recaf is a suite of specialized tools for assembling, editing, deobfuscating, decompiling, and instrumenting Java…

Projects sharing features with Fernflower

These projects share indexed features with Fernflower. Shared tags can include platform or build tooling; verify the primary use case before treating a result as a replacement.
  • jetbrains/fernflowerJetBrains avatar

    JetBrains/fernflower

    4,169View on GitHub↗

    Fernflower is a Java bytecode decompiler designed to convert compiled Java class files back into human-readable source code. It functions as a bytecode analysis tool that recovers original program logic and structure from compiled binaries. The project includes capabilities for obfuscated identifier resolution to rename ambiguous member elements, ensuring clear identifiers in the resulting source. These features support the analysis of obfuscated code, legacy code recovery, and Java malware analysis for security auditing. The system utilizes a structural analysis pipeline that includes contr

    Javadecompilerjavareverse-engineering
    View on GitHub↗4,169
  • rocky/python-uncompyle6rocky avatar

    rocky/python-uncompyle6

    4,302View on GitHub↗

    python-uncompyle6 is a Python bytecode decompiler and reverse engineering tool designed to convert compiled bytecode files back into human-readable source code. It functions as a source code recoverer and bytecode disassembler, allowing for the analysis of internal program logic and the reconstruction of original language constructs. The tool provides cross-version support, enabling the analysis and recovery of source code from bytecode created across multiple different versions of the Python interpreter. This allows it to operate as a cross-version bytecode analyzer that can interpret varied

    Python
    View on GitHub↗4,302
  • java-decompiler/jd-guijava-decompiler avatar

    java-decompiler/jd-gui

    15,024View on GitHub↗

    This project is a desktop application designed for the reverse engineering and inspection of compiled Java code. It functions as a graphical interface that translates Java bytecode back into readable source code, allowing users to examine the internal logic of class files and archives when original source files are unavailable. The tool provides a structured environment for navigating complex file hierarchies, including nested archives like JAR and WAR files. By maintaining an in-memory representation of loaded classes, it enables rapid searching and cross-referencing of code elements. The ap

    Java
    View on GitHub↗15,024
  • zrax/pycdczrax avatar

    zrax/pycdc

    4,304View on GitHub↗

    pycdc is a reverse engineering toolset that decompiles and disassembles compiled Python bytecode files back into readable source code. It parses .pyc file headers, reconstructs abstract syntax trees from bytecode instructions, and handles version-specific opcodes across Python versions 1.0 through 3.13 with endian-aware binary parsing. The tool recovers numeric constants, string literals, and marshalled Python objects from compiled bytecode, supporting both file-based and in-memory bytecode loading. It provides a human-readable disassembly listing of bytecode instructions alongside full sourc

    C++cxxdecompilerdisassembler
    View on GitHub↗4,304
Compare all 30 related projects→