Ablation is a reverse engineering framework that provides the exact same core disassembly, decompilation, and binary analysis capabilities as industry-standard tools like Ghidra, IDA Pro, and Binary Ninja. Combined with an LLM, it transforms into a fully autonomous reverse engineering tool.
Ablation is built for the modern landscape, and more importantly, the human.
Now reverse engineering is accessible to anyone. No matter your wallet or your barrier of entry into education, you can learn about reverse engineering as you reverse engineer.
flowchart TD
Binary(["<b>Target Binary</b><br/><i>ELF Β· PE Β· firmware</i>"])
Claude(["<b>Claude Code (Orchestrator)</b><br/><i>Central Agent Controller</i>"])
Binary -->|"load"| BCtx["<b>BinaryContext</b><br/><i>PLT Β· Strings Β· Call Graph Β· XRefs</i>"]
BCtx -->|"context"| Corpus["<b>Corpus Builder</b><br/><i>Semantic Embedding DB</i>"]
BCtx -->|"context"| Taint["<b>Taint Engine</b><br/><i>Data Flow / Sinks</i>"]
BCtx -->|"context"| Diffing["<b>Diffing Engine</b><br/><i>DTW / Version Delta</i>"]
BCtx -->|"context"| FmtStr["<b>Format String</b><br/><i>Specifier Scanner</i>"]
BCtx -->|"context"| Heap["<b>Heap Scanner</b><br/><i>Chunk / UAF Audit</i>"]
BCtx -->|"context"| MultiArch["<b>Multi-Arch Engine</b><br/><i>MIPS Β· PPC Β· RISC-V Β· ARC Β· V850</i>"]
BCtx -->|"context"| Driver["<b>Driver Engine</b><br/><i>Kernel IOCTL / BYOVD Audit</i>"]
Corpus -->|"embeddings"| Semantic["<b>Semantic Search</b><br/><i>BERT Behavioral Fingerprints</i>"]
Semantic -. "candidates" .-> Claude
Taint -. "findings" .-> Claude
Diffing -. "findings" .-> Claude
FmtStr -. "findings" .-> Claude
Heap -. "findings" .-> Claude
MultiArch -. "findings" .-> Claude
Driver -. "findings" .-> Claude
Claude -->|"confirmed finding"| Registry["<b>Finding Registry</b><br/><i>Cross-Target Corpus</i>"]
Registry -->|"seeds future sweeps"| Semantic
classDef primary fill:#2a1a4a,stroke:#7c3aed,stroke-width:2px,color:#fff
classDef foundation fill:#0d1117,stroke:#58a6ff,stroke-width:2px,color:#e5e7eb
classDef engine fill:#171717,stroke:#404040,stroke-width:1px,color:#e5e7eb
classDef feedback fill:#0d2818,stroke:#238636,stroke-width:2px,color:#e5e7eb
class Claude,Binary primary
class BCtx foundation
class Corpus,Semantic,Taint,Diffing,FmtStr,Heap,MultiArch,Driver engine
class Registry feedback
mindmap
root((Local Decompilers))
x86 Family
x86 - 32
x86 - 64
ARM Family
ARM - 32
ARM - 64
MIPS Family
MIPS 32+nM
MIPS - 64
PowerPC Family
PPC - 32
PPC - 64
RISC-V Family
RISC-V 32
RISC-V 64
Embedded / Other
ARC EM/HS
V850 - 32
-
Semantic Search via BERT: Semantic search finds results based on meaning rather than exact keywords. BERT reads text and figures out what it means. Similar meanings get similar scores, so you can search by concept instead of exact words. By combining the two, it speeds up the main bottleneck of reverse engineering while finding the vulnerable functions.
-
Extreme Performance: A 50 MB binary loads in 35 seconds. Ghidra and IDA Pro can take hours because they parse the entire file into a database before you can do anything. Ablation only analyzes the functions you are actively working on, so you start immediately.
-
Version Diffing: Utilizing the Jaccard method to measure how much a function's behavior overlaps between releases and Dynamic Time Warping that tracks the "shape" of how a function executes across those versions of firmware or software that a vendor updated, Ablation confirms whether a patch actually changed the logic or just the packaging, because a cosmetic recompile can't hide an unpatched vulnerability.
-
Cross-Binary Analysis: Analyze every shared library in a firmware image simultaneously, tracking data flows across binary boundaries.
-
Entropy Mapper: Finds encrypted, compressed, or packed sections in a binary.
-
Crypto Audit: Scans for cryptography.
-
XorSolver: Recovers, then decrypts the target section which allows further reverse engineering.
Everything legacy tools have
| Feature | Ablation | Ghidra | IDA Pro | Binary Ninja |
|---|---|---|---|---|
| Disassembler | β | β | β | β |
| Decompiler | β | β | β | β |
| Scripting API | β | β | β | β |
| Multi-Architecture | β | β | β | β |
| Binary Diffing | β | β | β | β |
Capabilities legacy tools don't have
| Feature | Ablation | Ghidra | IDA Pro | Binary Ninja |
|---|---|---|---|---|
| Semantic Search | β | β | β | β |
| Autonomous Loop | β | β | β | β |
| Pattern Library | β | β | β | β |
| Cross-Binary Taint Tracking | β | β | β | β |
| Version Diffing via DTW | β | β | β | β |
| Finding Registry | β | β | β | β |
| Load Time (50 MB) | 35 sec | 1-4 hrs | Heavy DB | Heavy DB |
| Cost | Open Source | Free / OSS | $3,000+ | Commercial |
When executing commands like ablation sweep firmware.so --json results.json, Claude Code can interpret the JSON, identify suspicious functions, and automatically pivot to run ablation cfg to visualize logic or ablation taint to verify reachability.
This ReAct loop using claude-sonnet-5 for decompilation effectively replaces the junior analyst role during triage, surfacing only confirmed, exploitable paths for human review.
Recommended model: claude-sonnet-4-6 (released January 2026).
/model claude-sonnet-4-6
Ablation has been used to analyze production firmware and kernel drivers from Fortinet, Cisco, Axis, Fujitsu, MikroTik, Orka, TencentOS, Enigma2, and Skydio.
Following coordinated disclosure on Cisco FMC and ISE, the Cisco Product Security Incident Response Team (PSIRT) has adopted Ablation for internal vulnerability triage. Cisco PSIRT is actively using it to triage ongoing disclosure reports across Firepower Threat Defense (FTD), Cisco Secure Client (AnyConnect), HyperFlex, and Catalyst. Cisco Adaptive Security Appliance (ASA) LINA has also been reverse engineered using Ablation, with findings currently under coordinated triage via CERT/CC VINCE.
| CVE | Product | Title | CVSS | Advisory |
|---|---|---|---|---|
| CVE-2026-76420 | Secure Firewall Management Center (FMC) | Peer Impersonation | 9.0 Critical | cisco-sa-fmc2-multivulns-HXgcqRG |
| CVE-2026-76412 | Secure Firewall Management Center (FMC) | Privilege Escalation to root | 8.5 High | cisco-sa-fmc2-multivulns-HXgcqRG |
| CVE-2026-76413 | Secure Firewall Management Center (FMC) | Single Sign-On Token Forgery | 8.5 High | cisco-sa-fmc2-multivulns-HXgcqRG |
| CVE-2026-76447 | Identity Services Engine (ISE) | OCSP Responder Authentication Bypass | 5.3 Medium | cisco-sa-ise-multiauth-bypass-sgD2HbL4 |
End-to-end analysis of the ML native binaries bundled in FortiSOAR 8.0.0, from RPM extraction through BinaryContext, string xrefs, and capstone disassembly to confirmed findings.
flowchart TD
RPM["elasticsearch-8.19.19-x86_64.rpm<br/>649MB Β· FortiSOAR 8.0.0 third-party bundle"]
RPM -->|rpm2cpio / cpio| EXTRACT["x-pack-ml/platform/linux-x86_64/"]
EXTRACT --> PI["bin/pytorch_inference<br/>397KB Β· stripped PIE Β· x86-64"]
EXTRACT --> CTRL["bin/controller<br/>128KB Β· stripped PIE Β· x86-64"]
EXTRACT --> LIBS["lib/libMlCore.so<br/>lib/libtorch_cpu.so"]
subgraph TRACK_PI ["pytorch_inference track"]
direction TB
BCI["BinaryContext.load_or_build()<br/>32 func starts Β· 551 strings Β· PLT built"]
BCI --> SS["ctx.strings scan<br/>aten::from_file VA 0x51560<br/>aten::save VA 0x51570<br/>validElasticLicenseKeyConfirmed 0x52e08"]
SS --> XREF["ctx.string_xrefs()<br/>both ops xref β 0x17499, 0x174af<br/>ctx.func_containing() β init fn 0x10000"]
XREF --> DA1["capstone disasm 0x17450<br/>lea rsi β aten::from_file Β· call set::insert<br/>lea rsi β aten::save Β· call set::insert<br/>CONFIRMED: exactly 2 blacklist entries"]
DA1 --> DA2["capstone disasm 0x16511<br/>cmp qword ptr [r9], 0<br/>je β model loads Β· ne β handleFatal<br/>empty set = bypass confirmed"]
end
subgraph TRACK_LIBS ["library analysis"]
direction TB
NM["nm -D libMlCore.so<br/>spawn at 0xfdb20 Β· ctor at 0xfcfd0"]
NM --> DA3["capstone disasm libMlCore.so:0xfdbc7<br/>cmp entry length == exe_path length<br/>memcmp at 0xfdbdb<br/>proper equality check Β· no prefix bypass"]
LSCAN["re.findall aten:: in libtorch_cpu.so<br/>2481 distinct ops found<br/>2 blocked Β· 2479 unblocked"]
end
subgraph TRACK_CTRL ["controller track"]
direction TB
BCC["BinaryContext.load_or_build()<br/>18 func starts Β· PLT Β· strings"]
BCC --> XREF2["ctx.string_xrefs() on 5 path strings<br/>./autodetect Β· ./categorize<br/>./data_frame_analyzer Β· ./normalize<br/>./pytorch_inference<br/>all xref at 0x9a04-0x9a5e"]
XREF2 --> DA4["capstone disasm 0x99e9<br/>call CProgName::progDir()<br/>call COsFileFuncs::chdir()<br/>chdir to binary dir before spawn"]
DA4 --> DA5["capstone disasm 0x11500<br/>args vector from command pipe tokens<br/>passed raw to spawn() at 0x11699<br/>no validation"]
end
PI --> BCI
PI --> BCC
LIBS --> NM
LIBS --> LSCAN
DA2 --> F1
LSCAN --> F1["F1 Β· HIGH<br/>verifySafeModel blocks 2 of 2481 ops<br/>upload malicious .pt via ML API<br/>seccomp BPF not yet decoded, CIA impact open"]
DA3 --> F2
XREF2 --> F2["F2 Β· LOW<br/>controller spawn allowlist is sound<br/>but args vector unchecked<br/>requires elasticsearch user pipe access"]
DA5 --> F2
SS --> F3["F3 Β· INFO<br/>license gate = JSON field only<br/>no cryptographic verification"]
classDef finding fill:#1a1a2e,stroke:#e94560,stroke-width:2px,color:#fff
classDef tool fill:#16213e,stroke:#0f3460,stroke-width:1px,color:#e5e7eb
classDef binary fill:#0f3460,stroke:#533483,stroke-width:2px,color:#fff
classDef input fill:#533483,stroke:#7c3aed,stroke-width:2px,color:#fff
class F1,F2,F3 finding
class BCI,BCC,NM,LSCAN,SS,XREF,XREF2,DA1,DA2,DA3,DA4,DA5 tool
class PI,CTRL,LIBS binary
class RPM,EXTRACT input
pip install git+https://github.com/Ablation-Tool/ablation
With LLM features:
pip install "git+https://github.com/Ablation-Tool/ablation#egg=ablation[llm]"
Reach out directly. If there's anything you'd like added or improved on or just report a bug.
-
Open an issue on GitHub
-
Signal: @deadbug.06
-
Python >= 3.10
-
capstone,numpy,lief,sentence-transformers,pyelftools -
Optional:
anthropicfor LLM features
See LICENSE.
Nicholas Michael Kloster & Claude
Books (All obtained from O'Reilly Media | www.oreilly.com)
| Title | Author |
|---|---|
| The Art of Software Security Assessment | Dowd, McDonald, Schuh |
| Practical Binary Analysis | Dennis Andriesse |
| Practical Malware Analysis | Sikorski, Honig |
| Practical Reverse Engineering | Dang, Gazet, Bachaalany |
| Hacking: The Art of Exploitation (2e) | Jon Erickson |
| Learning Linux Binary Analysis | Ryan O'Neill |
| Windows Internals Part 1 & 2 | Yosifovich, Russinovich |
| Rootkits: Subverting the Windows Kernel | Hoglund, Butler |
| Advanced Compiler Design and Implementation | Muchnick |
| Engineering a Compiler | Cooper, Torczon |
| Security Engineering (3rd ed.) | Ross Anderson |
| Practical IoT Hacking | Chantzis et al. |
| The Art of Mac Malware | Patrick Wardle |
| Mathematical Concepts and Methods in Modern Biology | Robeva, Hodge |
Research Papers
Honorable Mention
Microsoft Excel (Data Analysis ToolPak) When analyzing closed infrastructure or securing black-box systems, this exact process is called timing analysis or telemetry reverse engineering. Without source code, the Data Analysis ToolPak mathematically deconstructs how an application works on the backend by strictly observing its inputs and outputs.