goripper

module
v0.0.3-pre Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 3, 2026 License: Apache-2.0

README ΒΆ

GoRipper

CI Go Reference Go Report Card License Release

Go binary intelligence framework β€” extract behavioral insight from compiled Go executables.

Features β€’ Installation β€’ Quick Start β€’ Commands β€’ Configuration β€’ Project Layout β€’ Contributing β€’ License


GoRipper analyzes compiled Go binaries (PE .exe and ELF) without source code. It parses Go-specific metadata, disassembles code, extracts strings, recovers types, detects concurrency patterns, and tags suspicious behaviors β€” outputting structured JSON or human-readable reports. Built for security researchers, reverse engineers, and incident responders.

Status: v0.0.2-pre β€” string extraction quality fixed, pkgpath classification added, CFG stub guard in place. ELF support and a test suite are coming in v0.0.3-pre through v0.1.0.


✨ Features

  • Function Extraction β€” Parses gopclntab via Go's standard library (debug/gosym) to recover all function names, addresses, and sizes for Go 1.2 through 1.24.
  • Package Classification β€” Automatically separates runtime, stdlib, user, and cgo packages.
  • Call Graph β€” Disassembles .text using x86 instruction decoding to map every CALL edge across the binary.
  • String Extraction β€” Scans .rodata and cross-references strings to functions via LEA/MOV RIP-relative instruction analysis.
  • String Classification β€” Categorizes strings as URLs, IPs, file paths, secrets, Go package paths, or plain text.
  • Type Recovery β€” Parses Go runtime rtype descriptors to recover struct names, kinds, and field layouts.
  • Concurrency Detection β€” Identifies goroutine spawns, channel operations, and mutex usage via call graph patterns.
  • Behavior Tagging β€” Tags functions with NETWORK, CRYPTO, FILE_WRITE, FILE_READ, EXEC, REGISTRY, HTTP, DNS, and more.
  • CFG + Pseudocode β€” Builds basic-block control flow graphs and emits simplified pseudocode per function (optional, slow on large binaries).
  • JSON + Text Output β€” Machine-readable JSON or analyst-friendly tabular text.

πŸ“¦ Installation

From source (requires Go 1.24+):

go install github.com/muxover/goripper/cmd/goripper@latest

Build locally:

git clone https://github.com/muxover/goripper.git
cd goripper
go build -o goripper ./cmd/goripper/

Pre-built binaries:

Download from Releases for linux/amd64, linux/arm64, darwin/amd64, darwin/arm64, windows/amd64.


πŸš€ Quick Start

# Full analysis β€” human-readable report
goripper analyze ./mybinary

# Full analysis β€” JSON output
goripper analyze ./mybinary --json

# Show only user-written functions (no runtime/stdlib noise)
goripper functions ./mybinary --only-user

# Extract URL strings
goripper strings ./mybinary --type url

# Build call graph, no runtime functions
goripper callgraph ./mybinary --no-runtime

Example output:

=== GoRipper Analysis Report ===
Binary:     mybinary
Format:     PE
Arch:       x86_64
Go Version: go1.22.1
Size:       8388608 bytes

=== Summary ===
Total functions:      5729
  User:               312
  Stdlib:             1847
  Runtime:            3570
Suspicious:           61
Concurrent:           24
Total strings:        847 (12 URLs)
Recovered types:      203

πŸ“‹ Commands

Command Description
goripper analyze <binary> Full pipeline β€” functions, strings, call graph, types, behaviors
goripper functions <binary> List functions with addresses, sizes, and tags
goripper strings <binary> Extract and classify strings from .rodata
goripper callgraph <binary> Print the call graph as a tree

βš™οΈ Configuration

Global flags
Flag Default Description
--json false Emit JSON instead of text
--out <dir> stdout Write output to a file in this directory
-v, --verbose false Show pipeline stage timing and debug info
analyze flags
Flag Default Description
--no-runtime false Exclude runtime functions from output
--only-user false Show only user-written package functions
--cfg false Build CFG and emit pseudocode (slow on large binaries)
--types false Run type recovery from runtime rtype descriptors
functions flags
Flag Default Description
--only-user false Filter to user packages only
--no-runtime false Exclude runtime.* functions
--pkg <name> "" Filter to a specific package name
strings flags
Flag Default Description
--type <type> "" Filter: url, ip, path, secret, pkgpath
callgraph flags
Flag Default Description
--no-runtime false Exclude runtime nodes
--depth <n> 3 Maximum call depth to display

πŸ—οΈ Project Layout

goripper/
β”œβ”€β”€ cmd/goripper/          # CLI entry point (cobra)
β”œβ”€β”€ pkg/analyzer/          # Pipeline orchestrator
β”œβ”€β”€ internal/
β”‚   β”œβ”€β”€ binary/            # PE + ELF binary loaders
β”‚   β”œβ”€β”€ gopclntab/         # Go PC-line table parsing (via debug/gosym)
β”‚   β”œβ”€β”€ functions/         # Function extraction + runtime/stdlib/user classification
β”‚   β”œβ”€β”€ strings/           # .rodata scanner + LEA cross-reference + classifier
β”‚   β”œβ”€β”€ callgraph/         # x86 CALL disassembly + edge resolution
β”‚   β”œβ”€β”€ cfg/               # Basic block splitting + pseudocode emission
β”‚   β”œβ”€β”€ types/             # Go rtype descriptor recovery
β”‚   β”œβ”€β”€ concurrency/       # Goroutine/channel pattern detection
β”‚   β”œβ”€β”€ behaviors/         # Behavior tag rules (NETWORK, CRYPTO, EXEC, etc.)
β”‚   └── output/            # JSON + text report writers
└── pkg/analyzer/          # Pipeline orchestrator

🀝 Contributing

See CONTRIBUTING.md.


πŸ“„ License

Licensed under the Apache-2.0 license.



Made with ❀️ by Jax (@muxover)

Directories ΒΆ

Path Synopsis
cmd
goripper command
internal
cfg
gopclntab
Package gopclntab parses Go pclntab (PC-line table) data from Go binaries.
Package gopclntab parses Go pclntab (PC-line table) data from Go binaries.
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL