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

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, 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, 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. 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. 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 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:

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:

{
  "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:

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

Verify the installation:

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:

{
  "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 inside the ensure_capability() function to update the PATH:

        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:

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 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 for MCP registration or environment configuration.
  • Refresh the index using 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 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 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 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 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 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.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →