re-lief
Analyzes Android DEX, OAT, and ART binaries, providing class and method listing, string extraction, and format-specific metadata.
Analyzes Mach-O binaries used on iOS, exposing load commands, segments, code signature, and dyld info.
Analyzes ELF binaries for Linux, including sections, segments, dynamic symbols, RELRO, NX, PIE, RPATH/RUNPATH, and library dependencies.
Analyzes Mach-O binaries used on macOS, providing segment details, code signature, Objective-C metadata, and dyld shared cache support.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@re-liefCan you parse this binary and show its sections?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
re-lief
MCP server exposing LIEF (Library to Instrument Executable Formats) for cross-format binary analysis. Handles PE, ELF, MachO, COFF, DEX, ART, OAT in a single, normalized API.
Why
LIEF is the Python successor to pefile — same data for PE, plus ELF, MachO, DEX, ART, and OAT. It also handles DWARF/PDB debug info, ObjC metadata, the Dyld Shared Cache, and (optionally) has a built-in disassembler/assembler.
This server is the foundation of the RE-AI plugin: it works without any system tools installed (no rizin, no gdb, no anything), is pure Python, and runs in-process.
Related MCP server: re-mcp
Tools
Tool | What it does |
| Health check — return LIEF version, supported formats |
| Auto-detect format and return normalized header + high-level structure |
| Section list with permissions (R/W/X), virtual vs raw size, entropy |
| Symbol-level import/export tables (per format) |
| PE signature details (Win) |
| Appended data after the last section |
| Android DEX class list |
| Methods of a DEX class |
| Android OAT/ART method list |
| Capstone disassembly (works for any LIEF-parsed binary) |
| ASCII + UTF-16LE string extraction with section awareness |
| ASCII + UTF-16LE string extraction, section-aware, bucketed into keyword categories from |
| PE import hash (MD5 of normalized import table) |
| Produce a structural snapshot suitable for diffing two binaries |
Install
This server is part of the RE-AI plugin. The plugin's install.sh / install.bat installs it as part of the standard flow.
To install standalone:
pip install -e ./servers/re-liefRun
re-lief # stdio transport (default for MCP)
python -m re_lief # equivalentFormat support
LIEF auto-detects the format and exposes a polyglot API. Most tools return results shaped by format:
PE (
.exe,.dll,.sys): full sections, imports/exports, imphash, Authenticode, resources, exceptions, TLS, debug info (PDB path)ELF (Linux binaries, .so, kernel modules): sections, segments (program headers), dynamic symbols, RELRO, BIND_NOW, NX, PIE, RPATH/RUNPATH, SONAME, dynamic libs
MachO (macOS/iOS binaries, .dylib, frameworks): load commands, segments, LC_BUILD_VERSION, code signature, dyld info, ObjC metadata
DEX (Android Dalvik): class list with FQN, method list per class, string pool
OAT/ART (Android runtime): method list with class/method indices, vdex references
COFF (Windows object files, EFI): sections, symbols, relocations
Deprecation of pefile
If you're familiar with the v1 re-ai repo, this server supersedes the old pefile-based code. The string-extraction algorithm (ASCII + UTF-16LE) and imphash logic were ported from backend/analysis/native.py; the rest of the API is LIEF-native and works for all formats.
Categorization vocabulary
categorize_strings reads its 11 keyword categories from
data/drm-indicators.yaml::string_categories at MCP-server load
time. The anti_debug and hwid categories inherit their
keyword lists from
drm-indicators.yaml::anti_debug_indicators.checks[].name and
hwid_apis.high_signal[].api via a seed_from: YAML pointer —
when a future agent adds a new HWID API to hwid_apis.high_signal,
the categorizer picks it up automatically on next reload. The
other 9 categories have their keyword lists inline in the YAML
under string_categories.categories[].keywords.
This makes the categorizer idempotent with the catalog: the
YAML is the single source of truth for both the indicator set
that re-drm-fingerprint reads and the keyword set that the
categorizer reads. Both the static analysis and the string
analysis will give consistent answers.
On large binaries (>100 MB, e.g. a Unity IL2CPP GameAssembly.dll
wrapped by an encrypted-VM bytecode interpreter), pass
skip_sections=[".idata", ".xtls", ".xpdata", ".udata", ".xdata",
".didata", ".ecode", ".00cfg"] to skip the encrypted-VM
bytecode regions. Note: on the bundled IL2CPP target sample,
the import-table strings live inside those sections,
so skipping them blinds the categorizer to the imports. Use
skip_sections for memory-bound runs; use the full section walk
for completeness.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Heretek-RE/re-lief'
If you have feedback or need assistance with the MCP directory API, please join our Discord server