*This document is a usage manual for JEB. The latest version is available [online](https://www.pnfsoftware.com/jeb/manual).*

JEB is a reverse-engineering platform to perform disassembly, decompilation, debugging, and analysis of code and document files, manually or as part of an analysis pipeline.

- The first part of this guide is a **user manual** that covers basic usage related to analyzing, decompiling and debugging applications (Android apps, as well as native binaries). It is not an exhaustive resource. We recommend visiting our [blog](https://www.pnfsoftware.com/blog) for additional, pointed resources describing a variety of use cases.
- The second part is a **developer portal** for users who want to use the JEB API to script tasks, develop plugins, or even craft their own front-ends. Alongside these pages, the [API reference documentation website](https://www.pnfsoftware.com/jeb/apidoc) will be an indispensable resource.

# Installation

## Delivery

JEB is delivered electronically over email. Software updates are also delivered over email.

!!! note "Missing emails?"
    To ensure that software delivery emails do not end-up in spam folders, white-list this email address: **software@pnfsoftware.com**.

## Software Package

The software package is distributed as a zip archive, custom-generated for each registered user. It contains the back-end components as well as the reference front-end implementation for desktop platforms, referred to as the *UI client* through the rest of this manual. This manual focuses mostly on using JEB through the GUI client.

The GUI client runs on the following platforms:

- Windows (x64, arm64)
- Linux/GTK (x64, arm64)
- macOS (x64, arm64)

## Requirements

JEB requires a Java SE Development Kit (JDK) version 21 or above.

!!! warning "Java 24+"
    Java 24 or above is not recommended at this time. If you decide to use a JDK above 21, we recommend version 23 at most.

## Setup

Make sure you have a JDK installed.

- The `java` binary must be accessible from the `PATH` environment variable.
- Optionally, you may also want to set a `JAVA_HOME` environment variable pointing to your Java installation folder.

!!! warning "64-bit OS with 32-bit JRE"
    A common source of problems are 64-bit systems having a 32-bit JRE accessible from the PATH. You may have different versions of Java installed, but always make sure that your PATH or JAVA_HOME refers to one that matches your system specifications.

## Fixed Key

Some special JEB Pro builds may come with a fixed license key. In this case, you do not need to generate a key.

The key is specified in your software delivery email. You may input it directly when starting the GUI program (via the Manual Key Generation dialog) or add it directly to your `[JEB_folder]/bin/jeb-client.cfg` file:

```
.LicenseKey = xxxxxxxxx
```

## Key Generation

This section is about starting JEB for the first time and generating a license key.

### Floating Licenses

If you are setting up a controller for JEB Pro Floating, please [visit this page](floating.md).

### Headless Environment

If you are setting up JEB Pro OEM, or if your JEB software is to be run in a headless (non-graphical) environment, you will need to generate a key on the command line.
Run the appropriate start-up script with `--generate-key`:<br>

=== "Windows"
    ```bash
    jeb_wincon.bat -c --generate-key`
    ```
=== "Linux"
    ```bash
    jeb_linux.sh -c --generate-key`
    ```
=== "macOS"
    ```bash
    jeb_macos.sh -c --generate-key`
    ```

Then, follow the program's instructions to generate a key. You will need to visit the [key generation portal](https://pnfsoftware.com/genlk) online.

### GUI Client

For all other use cases involving starting JEB's graphical user interface, execute the startup script appropriate for your environment:

=== "Windows"
    ```bash
    jeb_wincon.bat
    ```
=== "Linux"
    ```bash
    jeb_linux.sh
    ```
=== "macOS"
    ```bash
    jeb_macos.sh
    ```

The startup script will locate and decrypt the JEB binary file. It may prompt the user and ask for the decryption password, which can be found within the software delivery email issued by PNF Software. Enter the password to allow the startup script to finish the installation process.

JEB will start.

!!! note "Customizing a start-up script"
    Start-up scripts get overwritten during an update. Therefore, if you wish to customize your start-up script, we recommend you copy it to a separate file, e.g. `jeb.sh` or `jeb.bat`.

## Registration

If it is the first time you are launching a non-floating JEB client (e.g., JEB Pro, JEB Android), you will be asked to accept the end-user license agreement, and generate a license key:

[![](img/jeb-registration-main.png)](img/jeb-registration-main.png)

- If your machine is connected to the Internet, the license key can be automatically generated by clicking "Generate a Key". If need be, you may also configure your Proxy settings.
- If your machine is not connected to the Internet, you will need to generate a manual key. Click "Manual Key Generation" and follow the instructions. You will be asked to visit the key generation portal on a separate machine (connected to the Internet), and provide your license data. Here is a [link to video detailing those steps](https://www.youtube.com/watch?v=gZd-XsilwR8).

[![](img/jeb-registration-manual.png)](img/jeb-registration-manual.png)

The license key will be stored in the `bin/jeb-client.cfg` file, under the `.LicenseKey` key entry. **A key is specific to the user-account and machine configuration on which JEB is running. Do not attempt to reuse a key on another system.**

!!! note "Key revocation"
    If you need to deprecate an older key (e.g., because of a machine replacement, user departure, or else), email [Licensing](mailto:licensing@pnfsoftware.com).

# First use

Congratulation! JEB is now running.
