# How to Extend the Kali Linux Platform Setup with Additional Reverse Engineering Tools

> Extend Kali Linux with more reverse engineering tools. Learn to declare capabilities in the manifest and run the bootstrap script for automatic installation and verification.

- Repository: [ZhaoXu/reverse-skill](https://github.com/zhaoxuya520/reverse-skill)
- Tags: how-to-guide
- Published: 2026-08-15

---

**You extend the Kali Linux platform setup by declaring new capabilities in the manifest file and executing the bootstrap script, which automatically handles installation, verification, and MCP registration through reusable helper functions.**

The **reverse-skill** repository provides a fully automated bootstrap system for Kali Linux 2026.1 that streamlines the deployment of reverse engineering utilities. This guide explains how to extend the Kali Linux platform setup with additional reverse engineering tools using the repository's manifest-driven architecture and generic installer helpers.

## Understanding the Manifest-Driven Architecture

The bootstrap system centralizes tool definitions in a single JSON manifest. In [`kali/scripts/bootstrap-manifest.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/kali/scripts/bootstrap-manifest.json), each tool is declared as a **capability** object that specifies the installation method, source location, and verification commands. The core bootstrap script, [`kali/scripts/bootstrap-reverse.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/kali/scripts/bootstrap-reverse.sh), implements the `ensure_capability()` function that reads these declarations and dispatches to the appropriate installer.

For standard installations, the script relies on generic helpers including `install_apt_package`, `install_pip_package`, `install_github_release`, and `install_git_commit`. These routines automatically manage downloading, checksum verification, extraction, and PATH configuration. When a tool requires specialized handling—such as custom environment variables, post-install commands, or MCP server registration—you add a specific case block inside the `ensure_capability()` function.

## Adding New Reverse Engineering Tools: The 4-Step Workflow

### Step 1: Declare the Tool in the Manifest

Add a JSON object to the `"capabilities"` array in [`kali/scripts/bootstrap-manifest.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/kali/scripts/bootstrap-manifest.json). The object must include the `bootstrapKind` field to select the installation strategy (`apt-package`, `pip-package`, `github-release-tar`, `git-clone`, etc.) and metadata specific to that strategy.

For tools distributed via GitHub releases, include `repo`, `assetRegex`, `installDir`, `releaseTag`, and `assetSha256`. For Python utilities, specify `packageName` and `version` under the `pip-package` kind.

### Step 2: Implement Custom Logic (When Required)

If the generic helpers cannot satisfy the tool's requirements, add a case block to the `ensure_capability()` function in [`kali/scripts/bootstrap-reverse.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/kali/scripts/bootstrap-reverse.sh). Use this pattern for tasks like exporting environment variables or invoking the `register_mcp_server` helper to write server definitions to `~/.claude/mcp.json`.

### Step 3: Refresh the Tool Index

Execute [`kali/scripts/refresh-tool-index.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/kali/scripts/refresh-tool-index.sh) to update the generated catalog after adding capabilities. Alternatively, pass `--skip-refresh` during bootstrap and run the index refresh separately later.

### Step 4: Execute the Bootstrap

Run the bootstrap script with the new capability name to trigger installation:

```bash
sudo bash kali/scripts/bootstrap-reverse.sh <new-tool>

```

## Practical Example: Installing Ghidra from GitHub Releases

The following example adds **Ghidra** using a specific release version rather than the potentially outdated APT package.

First, append this entry to [`kali/scripts/bootstrap-manifest.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/kali/scripts/bootstrap-manifest.json):

```json
{
  "name": "ghidra",
  "bootstrapKind": "github-release-tar",
  "repo": "NationalSecurityAgency/ghidra",
  "assetRegex": "^ghidra_.*_PUBLIC_.*\\.zip$",
  "installDir": "$HOME/tools/ghidra",
  "releaseTag": "10.2.3",
  "assetSha256": "e3b2c1d5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3",
  "verifyCommand": "ghidra",
  "docsUrl": "https://github.com/NationalSecurityAgency/ghidra",
  "canAutoInstall": true,
  "kaliNote": "Downloaded from GitHub because the APT package may be outdated."
}

```

Because the `github-release-tar` kind uses the generic `install_github_release` routine, no script modification is required. The helper automatically downloads the asset, verifies the SHA-256 hash, and extracts it to the specified directory.

Run the installation:

```bash
sudo bash kali/scripts/bootstrap-reverse.sh ghidra

```

Verify the installation:

```bash
ghidra -v

```

## Practical Example: Adding Radare2 Latest with Custom PATH

To install a specific **radare2** version with custom environment configuration, first add the manifest entry to [`kali/scripts/bootstrap-manifest.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/kali/scripts/bootstrap-manifest.json):

```json
{
  "name": "radare2-latest",
  "bootstrapKind": "github-release-tar",
  "repo": "radareorg/radare2",
  "assetRegex": "^radare2-.*-linux-x86_64\\.tar\\.gz$",
  "installDir": "$HOME/tools/radare2",
  "releaseTag": "5.8.0",
  "assetSha256": "d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5",
  "verifyCommand": "r2",
  "docsUrl": "https://github.com/radareorg/radare2",
  "canAutoInstall": true,
  "kaliNote": "Provides the newest radare2 version beyond the Kali pre‑installed package."
}

```

Then add a custom case in [`kali/scripts/bootstrap-reverse.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/kali/scripts/bootstrap-reverse.sh) inside the `ensure_capability()` function to update the PATH:

```bash
        radare2-latest)
            install_github_release "radareorg/radare2" "^radare2-.*-linux-x86_64\\.tar\\.gz$" "$HOME/tools/radare2" "5.8.0" "d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5"
            export PATH="$HOME/tools/radare2/bin:$PATH"
            ;;

```

Execute the bootstrap:

```bash
sudo bash kali/scripts/bootstrap-reverse.sh radare2-latest

```

## Summary

Extending the Kali Linux platform setup with additional reverse engineering tools relies on a declarative, data-driven approach that minimizes manual scripting:

- **Declare capabilities** in [`kali/scripts/bootstrap-manifest.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/kali/scripts/bootstrap-manifest.json) using standardized JSON schemas for APT, pip, GitHub releases, or git repositories.
- **Leverage generic installers** such as `install_github_release` and `install_apt_package` to handle downloads, checksum verification, and extraction automatically.
- **Customize when necessary** by adding case blocks to the `ensure_capability()` function in [`kali/scripts/bootstrap-reverse.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/kali/scripts/bootstrap-reverse.sh) for MCP registration or environment configuration.
- **Refresh the index** using [`kali/scripts/refresh-tool-index.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/kali/scripts/refresh-tool-index.sh) to update the tool catalog after installation.

## Frequently Asked Questions

### Can I install tools from private GitHub repositories?

Yes. When declaring the capability in [`bootstrap-manifest.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/bootstrap-manifest.json) with `bootstrapKind: github-release-tar`, ensure the environment variable `GITHUB_TOKEN` is set with appropriate permissions. The `install_github_release` helper in [`bootstrap-reverse.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/bootstrap-reverse.sh) uses standard `curl` with authentication headers when the token is present, allowing access to private release assets.

### How do I add a Python tool that requires a specific version?

Use the `pip-package` bootstrap kind in the manifest. Specify the `packageName` and `version` fields. The generic `install_pip_package` helper in [`bootstrap-reverse.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/bootstrap-reverse.sh) will install the exact version using `pip install package==version`, ensuring reproducible environments without manual virtualenv management.

### What is MCP registration and when do I need it?

**MCP** (Model Context Protocol) registration allows AI agents to invoke the tool via standardized JSON-RPC interfaces. You need it when the tool should be callable by Claude or other MCP-compatible agents. Call the `register_mcp_server` helper inside a custom case block in `ensure_capability()` to write the server definition to `~/.claude/mcp.json`. This is essential for tools like `ghidra-mcp` or `pentestswarm` that expose APIs to AI assistants.

### Do I need to edit [`bootstrap-reverse.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/bootstrap-reverse.sh) for every new tool?

No. Most reverse engineering tools require only a manifest entry because the generic installers handle standard installation patterns. You only edit [`bootstrap-reverse.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/bootstrap-reverse.sh) when the tool requires custom steps—such as compiling from source, setting environment variables, or registering MCP services—that cannot be expressed declaratively in the JSON manifest.