Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is an analytical decompiler?

IntelliJ incorporates Fernflower, a Java decompiler made by JetBrains.

On its GitHub page you can read the following:

Fernflower is the first actually working analytical decompiler for Java and probably for a high-level programming language in general.

What does this mean? What is an analytical decompiler? How does it differ from other types of decompilers?

like image 821
Jasper Catthoor Avatar asked Jun 10 '20 08:06

Jasper Catthoor


People also ask

What does a decompiler do?

A decompiler is a computer program that takes an executable file as input and attempts to create a high-level source file that can be recompiled successfully. It is therefore the opposite of a compiler, which takes a source file and makes an executable.

What does it mean to decompile a file?

What is a decompile? To decompile means to convert executable or ready-to-run program code -- sometimes called object code -- into some form of higher-level programming language that humans can easily understand. Decompilation is a type of reverse-engineering that performs the opposite operations of a compiler.

How does a Java decompiler work?

A Java Decompiler is a special type of decompiler which takes a class file as input and produces Java source code as output. The decompilation is exactly the reverse process of compilation. Thus, decompiler does not produce a replica of the source code.

What is decompiler in compiler construction?

A decompiler is a programming tool that converts an executable program or low-level/machine language into a format understandable to software programmers. It performs theoperations of a compiler, which translates source code into an executable format, but in reverse.


1 Answers

An analytical decompiler is one that analyzes compiled output and then figures out what source code would best match it, rather than trying to be the exact inverse of a traditional compiler. Sometimes this is necessary in case of optimizing compilers or obfuscated bytecode.

like image 105
Dev Avatar answered Oct 18 '22 08:10

Dev