HOME

TheInfoList



OR:

JEB is a
disassembler A disassembler is a computer program that translates machine language into assembly language—the inverse operation to that of an assembler. A disassembler differs from a decompiler, which targets a high-level language rather than an assembl ...
and
decompiler A decompiler is a computer program that translates an executable file to a high-level source file which can be recompiled successfully. It does therefore the opposite of a typical compiler, which translates a high-level language to a low-level l ...
software for Android applications and native machine code. It decompiles Dalvik bytecode to
Java source code Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible. It is a general-purpose programming language intended to let programmers ''write once, run anyw ...
, and x86,
ARM In human anatomy, the arm refers to the upper limb in common usage, although academically the term specifically means the upper arm between the glenohumeral joint (shoulder joint) and the elbow joint. The distal part of the upper limb between t ...
, MIPS,
RISC-V RISC-V (pronounced "risk-five" where five refers to the number of generations of RISC architecture that were developed at the University of California, Berkeley since 1981) is an open standard instruction set architecture (ISA) based on establi ...
machine code to C source code. The
assembly Assembly may refer to: Organisations and meetings * Deliberative assembly, a gathering of members who use parliamentary procedure for making decisions * General assembly, an official meeting of the members of an organization or of their representa ...
and source outputs are interactive and can be
refactored In computer programming and software design, code refactoring is the process of restructuring existing computer code—changing the '' factoring''—without changing its external behavior. Refactoring is intended to improve the design, structu ...
. Users can also write their own scripts and plugins to extend JEB functionality. Version 2.2 introduced Android debugging modules for Dalvik and native (Intel, ARM, MIPS) code. Users can "seamlessly debug Dalvik bytecode and native machine code, for all apps ..including those that do not explicitly allow debugging". Version 2.3 introduced native code decompilers. The first decompiler that shipped with JEB was a MIPS 32-bit interactive decompiler. JEB 3 ships with additional decompilers, including Intel x86, Intel x86-64, WebAssembly (wasm), Ethereum (evm), Diem blockchain (diemvm). JEB 4 was released in 2021. A RISC-V decompiler was added to JEB 4.5. A S7 PLC block decompiler was added to JEB 4.16.


History

JEB is the first Dalvik decompiler to provide interactive output, as reverse-engineers may examine cross-references, insert comments, or rename items, such as classes and methods. Whenever possible, the correspondence between the bytecode and the decompiled Java code is accessible to the user. Although JEB is branded as a decompiler, it also provides a full APK view (manifest, resources, certificates, etc.). An
API An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how ...
allows users to customize or automate actions through scripts and plugins, in Python and Java. The name may be a reference to the well-known security software IDA, as "JEB" = rot1("IDA").


Decompilers

JEB ships with the following proprietary and open-source decompiler plugins: * Dalvik bytecode to Java * Java bytecode to Java * Intel x86/x86-64 machine code to C * ARM machine code to C * MIPS machine code to C * RISC-V machine code to C * S7 (MC7) bytecode to C *
WebAssembly WebAssembly (sometimes abbreviated Wasm) defines a portable binary-code format and a corresponding text format for executable programs as well as software interfaces for facilitating interactions between such programs and their host environmen ...
bytecode to C * EVM bytecode (compiled Ethereum smart contracts) to
Solidity Solidity is an object-oriented programming language for implementing smart contracts on various blockchain platforms, most notably, Ethereum. It was developed by Christian Reitwiessner, Alex Beregszaszi, and several former Ethereum core contri ...
-like source code * Diem bytecode (compiled diemvm modules run on the Diem blockchain) to mvir-like (Move IR) source code


Other Plugins

JEB ships with a sizable number of disassemblers and debugger plugins.Features Matrix
/ref> JEB allows parsing of any file format, via the addition of native or third-party plugins. Examples include: a PDF parser plugin (proprietary), an XLS document plugin (open-sourced).


See also

*
IDA Ida or IDA may refer to: Astronomy *Ida Facula, a mountain on Amalthea, a moon of Jupiter *243 Ida, an asteroid * International Docking Adapter, a docking adapter for the International Space Station Computing * Intel Dynamic Acceleration, a tech ...
*
Ghidra Ghidra (pronounced gee-druh; ) is a free and open source reverse engineering tool developed by the National Security Agency (NSA) of the United States. The binaries were released at RSA Conference in March 2019; the sources were published one mo ...
* JD Decompiler


References


External links

* {{Official website, https://www.pnfsoftware.com Java decompilers Disassemblers Debuggers Software for modeling software