explaingit

kernelstub/retract

18GoAudience · developerComplexity · 3/5Setup · moderate

TLDR

A static analysis workbench for executable files that disassembles code, flags malware indicators, and exports reports compatible with Ghidra and IDA Pro, all without ever running the file being examined.

Mindmap

mindmap
  root((retract))
    Supported formats
      PE Windows
      ELF Linux
      Mach-O macOS
    Analysis features
      Strings extraction
      Disassembly
      Entropy scoring
      Control flow graph
    Security checks
      Missing protections
      Dangerous functions
      Malware patterns
      Anti-analysis techniques
    Output formats
      JSON and Markdown
      Ghidra IDA export
      Web UI browser
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Triage a suspicious executable for packed code, dangerous function calls, and malware persistence patterns without running it.

USE CASE 2

Export disassembly and control-flow graphs in Ghidra, IDA Pro, or Radare2-compatible formats for deeper reverse engineering.

USE CASE 3

Generate an executive summary or full technical report on an unknown binary to hand off during a security review or incident response.

Tech stack

GoNode.js

Getting it running

Difficulty · moderate Time to first run · 30min

Requires Go 1.22 or newer plus Node.js to build the web frontend component.

No license information is provided in this repository.

In plain English

Retract is a tool for examining executable files, such as programs or malware samples, without running them. It is aimed at security analysts, researchers, and anyone who needs to understand what a binary file does or whether it poses a risk. The README describes it as a workbench for defensive reverse engineering, malware triage, and vulnerability review. You give it an executable file and it produces a detailed set of reports covering what it found. It supports the three main executable formats used across Windows (PE), Linux (ELF), and macOS (Mach-O). For each file it extracts the internal structure, lists the functions and libraries the program calls, pulls out text strings embedded in the binary, calculates how random-looking different sections of the file are (high randomness often signals packed or encrypted code), and disassembles the machine code into a human-readable form. It also generates a control-flow graph, which is a map of the paths execution can take through the program. Beyond basic parsing, the tool performs automated analysis looking for signs of concern: missing security protections, calls to functions known for causing memory vulnerabilities, patterns associated with malware persistence, crypto-related code, and anti-analysis techniques. The output is organized into several report types, from a short executive summary to a full technical report, and can be exported in formats compatible with other reverse engineering tools like Ghidra, IDA Pro, and Radare2. The tool can also launch a local web interface that presents all the analysis results in a browser, which the README shows in a screenshot. Outputs can be written as JSON, Markdown, CSV, and other formats depending on the use case. Building it requires Go 1.22 or newer and Node.js for the web frontend. The README is clear that Retract only performs static analysis and never runs the files it examines, which matters when handling potentially malicious software.

Copy-paste prompts

Prompt 1
I have a suspicious Windows PE binary that I cannot run. How do I use kernelstub/retract to check it for missing security protections, calls to dangerous memory functions, and signs of packing?
Prompt 2
I ran retract on a Linux ELF binary and the entropy report flagged one section as very high randomness. What does that typically indicate and how do I see which part of the file it corresponds to?
Prompt 3
I want to use retract's web UI to walk through the control-flow graph of a Mach-O binary. How do I launch the local web interface and what does the graph show me that the command-line report does not?
Prompt 4
I need to import retract's analysis of a binary into Ghidra for deeper review. Which output format do I use and how do I load it into Ghidra?
Open on GitHub → Explain another repo

← kernelstub on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.