Leave your mark in every binary
Inject unique tracking strings into your tools and implants. At the end of an engagement, these breadcrumbs help blue team distinguish your binaries from real threats — and ensure nothing gets left behind.
Inject tracking strings into PE, ELF, and Mach-O binaries using multiple strategies: cave, section, extend, or overlay.
Auto-generate YARA detection rules for your breadcrumbs. Share with blue team for post-engagement cleanup.
Keep track of all breadcrumbs, tags, and patched binaries. Know exactly what you deployed and where.
Use directly in the browser with full WASM support - no server or installation required.
Generate embeddable code for C, C++, Rust, Go, C#, Java with dead code elimination prevention.
| Format | Cave | Section | Extend | Overlay |
|---|---|---|---|---|
| ELF (Linux) | ✓ | ✓ | ✓ | ✓ |
| PE (Windows) | ✓ | ✓ | ✓ | ✓ |
| Mach-O (macOS) | ✓ | ✓ | ✓ | ✓ |
Searches for code caves — null bytes in section padding. String is written into unused space. Binary size unchanged, no headers modified. Most stealthy but space is limited.
Creates a new section in the binary's section table (e.g., .bcrumb). Updates section count and size fields. Reliable for any string size but modifies structure.
Extends the last section by increasing its size and appending data. Less intrusive than new section. Data is mapped into memory at runtime.
Appends data past the file's end. No headers modified, loader ignores this region. Simplest approach but data not mapped into process memory.
$ bredcrumb generate -l 16 -t "operation-alpha"
RT8AfENUlAMN3hPk
$ bredcrumb generate --custom "MY_CUSTOM_MARKER" -t "op-beta"
MY_CUSTOM_MARKER
$ bredcrumb patch ./implant.exe "RT8AfENUlAMN3hPk" -s cave
Successfully patched binary!
Format: PE64
Strategy: cave (.rdata)
Virtual Address: 0x140008AB0
File Offset: 0x6EB0
Output: ./implant_patched.exe
$ bredcrumb patch ./beacon -s overlay -o ./beacon_tracked
Successfully patched binary!
Format: ELF64
Strategy: overlay
File Offset: 0x22BE8
$ bredcrumb yara "RT8AfENUlAMN3hPk" --ascii --wide
rule tracking_string_RT8AfENU {
meta:
description = "Detects tracking string: RT8AfENUlAMN3hPk"
author = "bredcrumb"
strings:
$tracking_string = "RT8AfENUlAMN3hPk" ascii wide
$tracking_hex = { 52 54 38 41 66 45 4E 55 ... }
condition:
any of them
}
$ bredcrumb list
ID Value Created Tags
------------------------------------------------------------------------------------------
24ba2d8f-121b-488a-b6d9-84267c61ba42 RT8AfENUlAMN3hPk 2026-02-03 08:58 operation-alpha
ac288ebe-a192-4481-a03b-147a2e1f59ce MY_CUSTOM_MARKER 2026-02-03 10:48 op-beta
Try bREDcrumb directly in your browser using WebAssembly
When you control the source code, embed the tracking string directly. The generated code includes DCE prevention techniques to ensure the string survives compiler optimization.