HexCore Binary Analysis Skill — v3.7.1
Overview
HexCore is a VS Code fork for reverse engineering and binary analysis (HikariSystem HexCore). It includes 20+ extensions with 6 native engines (Capstone, Unicorn, Remill, LLVM MC, better-sqlite3, Helix) and a full automation pipeline with conditional branching.
Current version: v3.7.1 "Dynamic Intelligence + Pipeline Branching" (2026-03-14)
Engine versions: capstone 1.3.2 | unicorn 1.2.1 | llvm-mc 1.0.0 | better-sqlite3 2.0.0 | remill 0.1.2 | helix 0.5.0
Deprecated: hexcore-rellic (superseded by Helix MLIR — removal planned for v3.8.0)
Extensions
Native Engines (no VS Code commands — pure API)
| Engine |
Version |
Purpose |
Architectures |
| hexcore-capstone |
1.3.2 |
Disassembly |
x86, x64, ARM, ARM64, MIPS, PPC, SPARC, M68K, RISC-V |
| hexcore-unicorn |
1.2.1 |
CPU emulation |
x86, x64, ARM, ARM64, MIPS, SPARC, PPC, RISC-V |
| hexcore-remill |
0.1.2 |
LLVM IR lifting |
x86, x64, ARM64 only |
| hexcore-llvm-mc |
1.0.0 |
Assembly/encoding |
x86, x64, ARM, ARM64, MIPS, RISC-V, PPC, SPARC |
| hexcore-better-sqlite3 |
2.0.0 |
SQLite database |
N/A |
| hexcore-helix |
0.5.0 |
MLIR decompiler (IR → pseudo-C) |
x86, x64 |
| hexcore-rellic |
— |
Rellic decompiler (DEPRECATED — removal in v3.8.0) |
x86, x64 |
Disassembler (hexcore-disassembler v1.5.0)
Professional disassembler with Capstone engine, ELF/PE parsing, CFG, xrefs, patching, the pipeline runner, and advanced analysis (junk filtering, VM detection, PRNG detection).
Headless commands (pipeline-safe):
hexcore.disasm.analyzeAll — Deep analysis (prolog scan + xrefs). New args: filterJunk, detectVM, detectPRNG
hexcore.disasm.buildFormula — Symbolic expression extraction (x86/x64 only)
hexcore.disasm.checkConstants — Validate numeric annotations
hexcore.disasm.searchStringHeadless — Search string references
hexcore.disasm.exportASMHeadless — Export assembly to file
hexcore.disasm.disassembleAtHeadless — Disassemble N instructions at address. New args: filterJunk
hexcore.disasm.liftToIR — Lift to LLVM IR (Remill, x86/x64/ARM64)
hexcore.disasm.dumpAndDisassemble — Dump emulation memory + disassemble in one step (v3.7.1)
hexcore.pipeline.runJob — Run automation job (now with onResult conditional branching)
hexcore.pipeline.listCapabilities — Export capability map
hexcore.pipeline.validateJob — Preflight validation
hexcore.pipeline.validateWorkspace — Batch validation
hexcore.pipeline.createPresetJob — Generate job from preset
hexcore.pipeline.saveJobAsProfile — Save job as profile
hexcore.pipeline.doctor — Diagnose health
Analysis features (v3.7.1):
filterJunkInstructions() — Detect and remove 7 junk patterns (callfuscation, nop sleds, identity ops)
detectVM() — VM obfuscation heuristics (dispatcher, handler tables, operand stacks)
detectPRNG() — Static PRNG pattern detection (srand/rand call sites, seed extraction)
loadBuffer() — Accept raw buffer for disassembly without file on disk (runtime memory)
Interactive commands (need UI):
hexcore.disasm.openFile, analyzeFile, goToAddress, findXrefs, addComment, renameFunction, showCFG, searchString, exportASM, patchInstruction, nopInstruction, assemble, assembleMultiple, savePatchedFile, setSyntax, showLlvmVersion, nativeStatus
Experimental:
hexcore.disasm.liftToIR — Lift to LLVM IR (requires Remill, x86/x64/ARM64 only)
Architecture auto-detection: Reads ELF e_machine / PE Machine headers. Supports x86, x64, ARM, ARM64, MIPS. Defaults to x64 for raw files.
Debugger (hexcore-debugger v2.2.0)
Emulation-based debugger using Unicorn engine with PE/ELF loading, API hooking, syscall handling, API call tracing, faithful PRNG emulation, side-channel analysis, and breakpoint auto-snapshots.
Process isolation & Smart Sync: x64 ELF and ARM64 ELF emulation run in dedicated child processes (x64ElfWorker.js, arm64Worker.js) to prevent Unicorn heap corruption from crashing the VS Code extension host. The worker communicates via JSON-RPC over IPC. A unique Smart Sync architecture instantly synchronizes heap memory (e.g. dynamically allocated strings) from the Worker to the Host before evaluating any API hook (such as __printf_chk, getline, or puts), guaranteeing flawless validation of complex obfuscated VMs (like active advanced HTB CTFs). PE emulation and other architectures run in-process.
Headless commands (pipeline-safe):
hexcore.debug.emulateFullHeadless — Unified single-shot emulation (load → configure → run → collect → dispose). New v3.7.1 args: permissiveMemoryMapping, prngMode, prngSeed, collectSideChannels, memoryDumps, breakpointConfigs (with autoSnapshot). Aliases: hexcore.debug.emulate.full, hexcore.debug.run
hexcore.debug.writeMemoryHeadless — Write data to emulation memory
hexcore.debug.setRegisterHeadless — Set CPU register value
hexcore.debug.setStdinHeadless — Set STDIN buffer for emulation
hexcore.debug.disposeHeadless — Dispose emulation session (idempotent)
hexcore.debug.snapshotHeadless — Save emulation snapshot
hexcore.debug.restoreSnapshotHeadless — Restore emulation snapshot
hexcore.debug.exportTraceHeadless — Export API/libc call trace as JSON
v3.7.1 Emulation Features:
- Permissive Memory Mapping —
permissiveMemoryMapping: true maps all segments with RWX permissions, allowing self-modifying VMs to jump to .rodata/.data without UC_ERR_FETCH_PROT
- PRNG Modes —
prngMode: 'glibc' (344-state TYPE_3 algorithm), 'msvcrt' (LCG: seed * 214013 + 2531011), 'stub' (returns 0, default). Faithful implementations that match native rand() sequences for any seed.
- Memory Dumps —
memoryDumps: [{ address, size, trigger: 'breakpoint'|'end' }] captures arbitrary memory ranges during emulation
- Breakpoint Auto-Snapshots —
breakpointConfigs: [{ address, autoSnapshot: true, dumpRanges? }] automatically captures registers, stack, and optional memory ranges at breakpoints, then continues execution
- Side-Channel Analysis —
collectSideChannels: true installs instrumentation hooks to collect instruction counts per basic block, memory access patterns, and branch statistics
- Runtime Memory Disassembly —
dumpAndDisassemble(address, size) combines memory reading and Capstone disassembly in one operation for analyzing runtime-decrypted code
Interactive commands (need UI):
hexcore.debug.emulate — Start emulation (auto-detect arch)
hexcore.debug.emulateWithArch — Start with manual arch selection
hexcore.debug.emulationStep — Step one instruction
hexcore.debug.emulationContinue — Continue to breakpoint/end
hexcore.debug.emulationBreakpoint — Set breakpoint
hexcore.debug.emulationReadMemory — Read memory region
hexcore.debug.setStdin — Set STDIN buffer for ELF emulation
hexcore.debug.saveSnapshot — Save emulation snapshot
hexcore.debug.restoreSnapshot — Restore snapshot
hexcore.debug.unicornStatus — Show Unicorn status
Internal engine capabilities (programmatic, not exposed as headless commands):
- PE loading with import resolution and Windows API hooks
- ELF loading with PLT stubs and Linux API hooks (libc emulation)
- Linux syscall handler (x86/x64: int 0x80, syscall instruction; ARM64: SVC #0)
- Architecture auto-detection from ELF/PE headers
- Deterministic ELF continue (250K instruction budget)
- STDIN buffer injection for scanf/read emulation
- Snapshot save/restore via Unicorn context
- x64 ELF worker process isolation with Smart Sync (prevents host heap corruption & guarantees dynamic string visibility)
- ARM64 ELF worker process isolation (same pattern)
Architecture support in debugger:
| Feature |
x86 |
x64 |
ARM64 |
ARM |
MIPS |
| Unicorn init |
Yes |
Yes |
Yes |
Yes |
Yes |
| Register read/write |
Yes |
Yes |
Yes |
No |
No |
| ELF loading |
Yes |
Yes |
Yes |
No |
No |
| PE loading |
Yes |
Yes |
No |
No |
No |
| Stack initialization |
Yes |
Yes |
Yes |
No |
No |
| Syscall handler |
Yes |
Yes |
Yes |
No |
No |
| API hooks (Linux) |
Yes |
Yes |
Yes |
No |
No |
| API hooks (Windows) |
Yes |
Yes |
No |
No |
No |
| Worker process isolation |
No |
Yes (ELF) |
Yes |
No |
No |
Other Extensions
| Extension |
Version |
Headless |
Commands |
| hexcore-peanalyzer |
— |
Yes |
peanalyzer.analyze, peanalyzer.analyzeActive |
| hexcore-elfanalyzer |
1.0.0 |
Yes |
elfanalyzer.analyze, elfanalyzer.analyzeActive |
| hexcore-hexviewer |
— |
Yes |
hexview.dumpHeadless, hexview.searchHeadless, openHexView, goToOffset, searchHex, copyAsHex, copyAsC, copyAsPython, addBookmark, applyTemplate, toggleEdit |
| hexcore-strings |
— |
Yes |
strings.extract, strings.extractAdvanced (now with multi-byte XOR, rolling XOR, increment XOR) |
| hexcore-entropy |
— |
Yes |
entropy.analyze |
| hexcore-filetype |
— |
Yes |
filetype.detect |
| hexcore-hashcalc |
— |
Yes |
hashcalc.calculate, hashcalc.quick, hashcalc.verify |
| hexcore-base64 |
— |
Yes |
base64.decodeHeadless, base64.decode |
| hexcore-yara |
— |
Partial |
yara.scan (headless), yara.updateRules (headless), rest interactive |
| hexcore-ioc |
— |
Yes |
ioc.extract, ioc.extractActive |
| hexcore-minidump |
— |
Yes |
minidump.parse, minidump.threads, minidump.modules, minidump.memory |
| hexcore-report-composer |
1.0.0 |
Yes |
pipeline.composeReport — aggregates reports into unified Markdown |
| hexcore-common |
— |
N/A |
Utility library (formatBytes, loadNativeModule, etc.) |
Pipeline Automation
Creating Jobs
- From preset: Run
hexcore.pipeline.createPresetJob — choose quick-triage, full-static, or ctf-reverse
- Manual: Create
.hexcore_job.json in workspace root (see docs/HEXCORE_JOB_TEMPLATES.md)
- Save profile: Run
hexcore.pipeline.saveJobAsProfile to store in .hexcore_profiles.json
Running Jobs
- Auto: HexCore watches
.hexcore_job.json and runs on create/change
- Manual: Run
hexcore.pipeline.runJob
- Validate first: Run
hexcore.pipeline.validateJob for preflight check
- Conditional branching: Use
onResult in pipeline steps to skip, goto, abort, or log based on step output (v3.7.1)
Job Contract
Every headless command receives:
file — path to target binary
quiet — suppress UI notifications
output — { path, format } for writing results
Output
Jobs produce in outDir:
hexcore-pipeline.log — execution log with timestamps
hexcore-pipeline.status.json — structured status per step (ok/failed/timed-out)
- Per-step output files (JSON or MD)
Architecture Support Matrix
| Component |
x86 |
x64 |
ARM |
ARM64 |
MIPS |
| Disassembly (Capstone) |
Yes |
Yes |
Yes |
Yes |
Yes |
| Emulation (Unicorn) |
Yes |
Yes |
Yes |
Yes |
Yes |
| IR Lifting (Remill) |
Yes |
Yes |
No |
Yes |
No |
| Assembly (LLVM MC) |
Yes |
Yes |
Yes |
Yes |
Yes |
| Debugger (full) |
Yes |
Yes |
No |
Yes |
No |
| PE Analysis |
Yes |
Yes |
No |
No |
No |
| Minidump |
Yes |
Yes |
No |
No |
No |
| buildFormula |
Yes |
Yes |
No |
No |
No |
Known Gaps (Critical for Agents)
Debugger interactive commands still need UI — MOSTLY RESOLVED: emulateFullHeadless provides full headless emulation (load → run → collect → dispose) without UI. writeMemoryHeadless, setRegisterHeadless, setStdinHeadless, and disposeHeadless fill remaining gaps. Only emulateWithArch (manual arch picker) remains interactive.
Debugger ARM64 ELF is incomplete — RESOLVED in v3.5.1: Full ARM64 DebugEngine with stack initialization, process stack layout (argc/argv via X0/X1/X2), SVC syscall handler, register state mapping, and 20+ Linux syscalls.
- Debugger + static ELF — statically-linked binaries have no PLT stubs, so LinuxApiHooks cannot intercept libc calls. Only direct syscall interception works (and only for x86/x64/ARM64).
- buildFormula is x86/x64 only — the register regex doesn't recognize ARM64 registers (x0-x30, sp, lr). (ARM64 formulaBuilder added in v3.5.1 but limited to 15 mnemonics)
No ELF analyzer extension — RESOLVED in v3.5.2: hexcore-elfanalyzer provides full ELF analysis (sections, segments, symbols, security mitigations).
Base64 decode has no headless mode — RESOLVED in v3.5.2: hexcore.base64.decodeHeadless is pipeline-safe.
Hex viewer has no headless dump — RESOLVED in v3.5.2: hexcore.hexview.dumpHeadless and hexcore.hexview.searchHeadless are pipeline-safe.
Strings XOR is 1-byte only — RESOLVED in v3.5.2: extractAdvanced now supports multi-byte XOR (2, 4, 8, 16 bytes), rolling XOR, and XOR with increment.
- Prebuilds are win32-x64 only — Linux/macOS need
node-gyp rebuild fallback.
- Rellic is DEPRECATED — Superseded by Helix MLIR engine in v3.7.0. Remains functional for backward compatibility but will be removed in v3.8.0. Use
hexcore.helix.decompile / hexcore.helix.decompileIR instead.
What Agents CAN Do
- Create
.hexcore_job.json files and run analysis via hexcore.pipeline.runJob
- Use
onResult conditional branching in pipeline steps to build adaptive workflows (skip, goto, abort, log)
- Read pipeline output from
hexcore-pipeline.status.json and step output files
- Interpret results — entropy reports, string extractions, YARA matches, IOC lists
- Validate jobs with
hexcore.pipeline.validateJob before execution
- Use presets via
hexcore.pipeline.createPresetJob for quick setup
- Search strings headlessly via
hexcore.disasm.searchStringHeadless
- Export assembly headlessly via
hexcore.disasm.exportASMHeadless
- Analyze ELF binaries via
hexcore.elfanalyzer.analyze (sections, segments, symbols, security)
- Decode Base64 via
hexcore.base64.decodeHeadless
- Dump hex ranges via
hexcore.hexview.dumpHeadless
- Search hex patterns via
hexcore.hexview.searchHeadless
- Run full emulation headlessly via
hexcore.debug.emulateFullHeadless with permissive memory mapping, PRNG modes, side-channel analysis, memory dumps, and breakpoint auto-snapshots
- Write emulation memory via
hexcore.debug.writeMemoryHeadless
- Set CPU registers via
hexcore.debug.setRegisterHeadless
- Set STDIN buffer via
hexcore.debug.setStdinHeadless
- Dispose emulation sessions via
hexcore.debug.disposeHeadless
- Save/restore emulation snapshots via
hexcore.debug.snapshotHeadless / restoreSnapshotHeadless
- Export API call traces via
hexcore.debug.exportTraceHeadless
- Compose unified reports via
hexcore.pipeline.composeReport
- Filter junk instructions via
filterJunk: true in analyzeAll / disassembleAtHeadless args
- Detect VM obfuscation via
detectVM: true in analyzeAll args
- Detect PRNG patterns via
detectPRNG: true in analyzeAll args
- Dump and disassemble runtime memory via
dumpAndDisassemble for analyzing decrypted code
- Decompile to pseudo-C via
hexcore.helix.decompile (one-step) or liftToIR + hexcore.helix.decompileIR (two-step)
What Agents CANNOT Do
Start emulation — RESOLVED: Use hexcore.debug.emulateFullHeadless (or aliases hexcore.debug.emulate.full / hexcore.debug.run) for headless emulation. Interactive emulateWithArch still requires UI for manual arch selection.
- See webviews — CFG graph, hex viewer, debugger view are visual only
- Use interactive commands — file pickers, input boxes, quick-picks
- Patch binaries —
patchInstruction, nopInstruction, savePatchedFile need the disassembler UI open
- Run YARA quick scan — requires prior UI context
Workflow: Static Analysis
1. hexcore.filetype.detect → Identify file type
2. hexcore.hashcalc.calculate → Compute hashes (VT lookup)
3. hexcore.entropy.analyze → Detect packing/encryption
4. hexcore.strings.extract → Extract strings
5. hexcore.strings.extractAdvanced → XOR deobfuscation (1-byte + multi-byte + rolling + increment) + stack strings
6. hexcore.base64.decodeHeadless → Detect Base64 encoded strings
7. hexcore.hexview.dumpHeadless → Inspect file header bytes
8. hexcore.peanalyzer.analyze → PE headers/imports (PE files only)
9. hexcore.elfanalyzer.analyze → ELF sections/segments/symbols/security (ELF files only)
10. hexcore.disasm.analyzeAll → Deep disassembly + xrefs
11. hexcore.yara.scan → Threat detection
12. hexcore.ioc.extract → IOC extraction
13. hexcore.pipeline.composeReport → Unified report
Workflow: CTF Reverse Engineering
1. hexcore.filetype.detect → Verify binary format
2. hexcore.disasm.analyzeAll → Function discovery + xrefs
3. hexcore.disasm.exportASMHeadless → Full disassembly export
4. hexcore.disasm.searchStringHeadless → Find flag patterns
5. hexcore.strings.extractAdvanced → Find obfuscated strings (multi-byte XOR, rolling, increment)
6. hexcore.base64.decodeHeadless → Find Base64 encoded data
7. hexcore.hexview.searchHeadless → Search for flag byte patterns
8. hexcore.disasm.buildFormula → Extract key computations (x86/x64 only)
Workflow: Dynamic Analysis (Emulation)
1. hexcore.debug.emulateFullHeadless → Single-shot emulation (recommended for pipeline jobs)
Args: { file, arch?, stdin?, maxInstructions?, breakpoints?, keepAlive?,
permissiveMemoryMapping?, prngMode?, prngSeed?,
collectSideChannels?, memoryDumps?, breakpointConfigs?, output? }
Returns: FullEmulationResult with registers, apiCalls, stdout, memoryRegions,
crash status, snapshots, dumps, sideChannels
For advanced multi-step emulation (keepAlive: true):
2. hexcore.debug.emulateFullHeadless → Start with keepAlive: true
3. hexcore.debug.writeMemoryHeadless → Patch memory (base64 or 0x hex data)
4. hexcore.debug.setRegisterHeadless → Modify CPU registers
5. hexcore.debug.setStdinHeadless → Inject STDIN input
6. hexcore.debug.snapshotHeadless → Save state checkpoint
7. hexcore.debug.disposeHeadless → Clean up session
File Format Support
| Format |
Extensions |
PE Analysis |
ELF Analysis |
Disassembly |
Emulation |
| PE32 |
.exe, .dll |
Yes |
No |
Yes (x86) |
Yes |
| PE64 |
.exe, .dll |
Yes |
No |
Yes (x64) |
Yes |
| ELF32 |
.elf, .so, .o |
No |
Yes |
Yes (x86/ARM) |
Yes |
| ELF64 |
.elf, .so |
No |
Yes |
Yes (x64/ARM64/MIPS) |
Yes (worker isolated) |
| Raw |
.bin, .raw |
No |
No |
Yes (default x64) |
Yes |
| Minidump |
.dmp |
N/A |
N/A |
N/A |
N/A |
HexCore v3.7.1 "Dynamic Intelligence + Pipeline Branching" — Powered by Capstone 1.3.2 / Unicorn 1.2.1 / LLVM MC 1.0.0 / Remill 0.1.2 / Helix 0.5.0
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: hexcore-binary-analysis3description: Skill para analise de binarios com ferramentas HexCore integradas ao editor Use when this capability is needed.4---56# HexCore Binary Analysis Skill — v3.7.178## Overview910HexCore is a VS Code fork for reverse engineering and binary analysis (HikariSystem HexCore). It includes 20+ extensions with 6 native engines (Capstone, Unicorn, Remill, LLVM MC, better-sqlite3, Helix) and a full automation pipeline with conditional branching.1112> **Current version:** v3.7.1 "Dynamic Intelligence + Pipeline Branching" (2026-03-14)13> **Engine versions:** capstone 1.3.2 | unicorn 1.2.1 | llvm-mc 1.0.0 | better-sqlite3 2.0.0 | remill 0.1.2 | helix 0.5.014> **Deprecated:** hexcore-rellic (superseded by Helix MLIR — removal planned for v3.8.0)1516---1718## Extensions1920### Native Engines (no VS Code commands — pure API)2122| Engine | Version | Purpose | Architectures |23|--------|---------|---------|---------------|24| **hexcore-capstone** | 1.3.2 | Disassembly | x86, x64, ARM, ARM64, MIPS, PPC, SPARC, M68K, RISC-V |25| **hexcore-unicorn** | 1.2.1 | CPU emulation | x86, x64, ARM, ARM64, MIPS, SPARC, PPC, RISC-V |26| **hexcore-remill** | 0.1.2 | LLVM IR lifting | x86, x64, ARM64 only |27| **hexcore-llvm-mc** | 1.0.0 | Assembly/encoding | x86, x64, ARM, ARM64, MIPS, RISC-V, PPC, SPARC |28| **hexcore-better-sqlite3** | 2.0.0 | SQLite database | N/A |29| **hexcore-helix** | 0.5.0 | MLIR decompiler (IR → pseudo-C) | x86, x64 |30| **hexcore-rellic** | — | ~~Rellic decompiler~~ **(DEPRECATED — removal in v3.8.0)** | x86, x64 |3132### Disassembler (`hexcore-disassembler` v1.5.0)3334Professional disassembler with Capstone engine, ELF/PE parsing, CFG, xrefs, patching, the pipeline runner, and advanced analysis (junk filtering, VM detection, PRNG detection).3536**Headless commands (pipeline-safe):**37- `hexcore.disasm.analyzeAll` — Deep analysis (prolog scan + xrefs). New args: `filterJunk`, `detectVM`, `detectPRNG`38- `hexcore.disasm.buildFormula` — Symbolic expression extraction (**x86/x64 only**)39- `hexcore.disasm.checkConstants` — Validate numeric annotations40- `hexcore.disasm.searchStringHeadless` — Search string references41- `hexcore.disasm.exportASMHeadless` — Export assembly to file42- `hexcore.disasm.disassembleAtHeadless` — Disassemble N instructions at address. New args: `filterJunk`43- `hexcore.disasm.liftToIR` — Lift to LLVM IR (Remill, x86/x64/ARM64)44- `hexcore.disasm.dumpAndDisassemble` — Dump emulation memory + disassemble in one step (v3.7.1)45- `hexcore.pipeline.runJob` — Run automation job (now with `onResult` conditional branching)46- `hexcore.pipeline.listCapabilities` — Export capability map47- `hexcore.pipeline.validateJob` — Preflight validation48- `hexcore.pipeline.validateWorkspace` — Batch validation49- `hexcore.pipeline.createPresetJob` — Generate job from preset50- `hexcore.pipeline.saveJobAsProfile` — Save job as profile51- `hexcore.pipeline.doctor` — Diagnose health5253**Analysis features (v3.7.1):**54- `filterJunkInstructions()` — Detect and remove 7 junk patterns (callfuscation, nop sleds, identity ops)55- `detectVM()` — VM obfuscation heuristics (dispatcher, handler tables, operand stacks)56- `detectPRNG()` — Static PRNG pattern detection (srand/rand call sites, seed extraction)57- `loadBuffer()` — Accept raw buffer for disassembly without file on disk (runtime memory)5859**Interactive commands (need UI):**60- `hexcore.disasm.openFile`, `analyzeFile`, `goToAddress`, `findXrefs`, `addComment`, `renameFunction`, `showCFG`, `searchString`, `exportASM`, `patchInstruction`, `nopInstruction`, `assemble`, `assembleMultiple`, `savePatchedFile`, `setSyntax`, `showLlvmVersion`, `nativeStatus`6162**Experimental:**63- `hexcore.disasm.liftToIR` — Lift to LLVM IR (requires Remill, x86/x64/ARM64 only)6465**Architecture auto-detection:** Reads ELF `e_machine` / PE `Machine` headers. Supports x86, x64, ARM, ARM64, MIPS. Defaults to x64 for raw files.6667### Debugger (`hexcore-debugger` v2.2.0)6869Emulation-based debugger using Unicorn engine with PE/ELF loading, API hooking, syscall handling, API call tracing, faithful PRNG emulation, side-channel analysis, and breakpoint auto-snapshots.7071**Process isolation & Smart Sync:** x64 ELF and ARM64 ELF emulation run in dedicated child processes (`x64ElfWorker.js`, `arm64Worker.js`) to prevent Unicorn heap corruption from crashing the VS Code extension host. The worker communicates via JSON-RPC over IPC. A unique **Smart Sync** architecture instantly synchronizes heap memory (e.g. dynamically allocated strings) from the Worker to the Host before evaluating any API hook (such as `__printf_chk`, `getline`, or `puts`), guaranteeing flawless validation of complex obfuscated VMs (like active advanced HTB CTFs). PE emulation and other architectures run in-process.7273**Headless commands (pipeline-safe):**74- `hexcore.debug.emulateFullHeadless` — **Unified single-shot emulation** (load → configure → run → collect → dispose). New v3.7.1 args: `permissiveMemoryMapping`, `prngMode`, `prngSeed`, `collectSideChannels`, `memoryDumps`, `breakpointConfigs` (with `autoSnapshot`). Aliases: `hexcore.debug.emulate.full`, `hexcore.debug.run`75- `hexcore.debug.writeMemoryHeadless` — Write data to emulation memory76- `hexcore.debug.setRegisterHeadless` — Set CPU register value77- `hexcore.debug.setStdinHeadless` — Set STDIN buffer for emulation78- `hexcore.debug.disposeHeadless` — Dispose emulation session (idempotent)79- `hexcore.debug.snapshotHeadless` — Save emulation snapshot80- `hexcore.debug.restoreSnapshotHeadless` — Restore emulation snapshot81- `hexcore.debug.exportTraceHeadless` — Export API/libc call trace as JSON8283**v3.7.1 Emulation Features:**84- **Permissive Memory Mapping** — `permissiveMemoryMapping: true` maps all segments with RWX permissions, allowing self-modifying VMs to jump to .rodata/.data without UC_ERR_FETCH_PROT85- **PRNG Modes** — `prngMode: 'glibc'` (344-state TYPE_3 algorithm), `'msvcrt'` (LCG: seed * 214013 + 2531011), `'stub'` (returns 0, default). Faithful implementations that match native rand() sequences for any seed.86- **Memory Dumps** — `memoryDumps: [{ address, size, trigger: 'breakpoint'|'end' }]` captures arbitrary memory ranges during emulation87- **Breakpoint Auto-Snapshots** — `breakpointConfigs: [{ address, autoSnapshot: true, dumpRanges? }]` automatically captures registers, stack, and optional memory ranges at breakpoints, then continues execution88- **Side-Channel Analysis** — `collectSideChannels: true` installs instrumentation hooks to collect instruction counts per basic block, memory access patterns, and branch statistics89- **Runtime Memory Disassembly** — `dumpAndDisassemble(address, size)` combines memory reading and Capstone disassembly in one operation for analyzing runtime-decrypted code9091**Interactive commands (need UI):**92- `hexcore.debug.emulate` — Start emulation (auto-detect arch)93- `hexcore.debug.emulateWithArch` — Start with manual arch selection94- `hexcore.debug.emulationStep` — Step one instruction95- `hexcore.debug.emulationContinue` — Continue to breakpoint/end96- `hexcore.debug.emulationBreakpoint` — Set breakpoint97- `hexcore.debug.emulationReadMemory` — Read memory region98- `hexcore.debug.setStdin` — Set STDIN buffer for ELF emulation99- `hexcore.debug.saveSnapshot` — Save emulation snapshot100- `hexcore.debug.restoreSnapshot` — Restore snapshot101- `hexcore.debug.unicornStatus` — Show Unicorn status102103**Internal engine capabilities (programmatic, not exposed as headless commands):**104- PE loading with import resolution and Windows API hooks105- ELF loading with PLT stubs and Linux API hooks (libc emulation)106- Linux syscall handler (x86/x64: int 0x80, syscall instruction; ARM64: SVC #0)107- Architecture auto-detection from ELF/PE headers108- Deterministic ELF continue (250K instruction budget)109- STDIN buffer injection for scanf/read emulation110- Snapshot save/restore via Unicorn context111- x64 ELF worker process isolation with Smart Sync (prevents host heap corruption & guarantees dynamic string visibility)112- ARM64 ELF worker process isolation (same pattern)113114**Architecture support in debugger:**115116| Feature | x86 | x64 | ARM64 | ARM | MIPS |117|---------|-----|-----|-------|-----|------|118| Unicorn init | Yes | Yes | Yes | Yes | Yes |119| Register read/write | Yes | Yes | Yes | No | No |120| ELF loading | Yes | Yes | Yes | No | No |121| PE loading | Yes | Yes | No | No | No |122| Stack initialization | Yes | Yes | Yes | No | No |123| Syscall handler | Yes | Yes | Yes | No | No |124| API hooks (Linux) | Yes | Yes | Yes | No | No |125| API hooks (Windows) | Yes | Yes | No | No | No |126| Worker process isolation | No | Yes (ELF) | Yes | No | No |127128### Other Extensions129130| Extension | Version | Headless | Commands |131|-----------|---------|----------|----------|132| **hexcore-peanalyzer** | — | Yes | `peanalyzer.analyze`, `peanalyzer.analyzeActive` |133| **hexcore-elfanalyzer** | 1.0.0 | Yes | `elfanalyzer.analyze`, `elfanalyzer.analyzeActive` |134| **hexcore-hexviewer** | — | Yes | `hexview.dumpHeadless`, `hexview.searchHeadless`, `openHexView`, `goToOffset`, `searchHex`, `copyAsHex`, `copyAsC`, `copyAsPython`, `addBookmark`, `applyTemplate`, `toggleEdit` |135| **hexcore-strings** | — | Yes | `strings.extract`, `strings.extractAdvanced` (now with multi-byte XOR, rolling XOR, increment XOR) |136| **hexcore-entropy** | — | Yes | `entropy.analyze` |137| **hexcore-filetype** | — | Yes | `filetype.detect` |138| **hexcore-hashcalc** | — | Yes | `hashcalc.calculate`, `hashcalc.quick`, `hashcalc.verify` |139| **hexcore-base64** | — | Yes | `base64.decodeHeadless`, `base64.decode` |140| **hexcore-yara** | — | Partial | `yara.scan` (headless), `yara.updateRules` (headless), rest interactive |141| **hexcore-ioc** | — | Yes | `ioc.extract`, `ioc.extractActive` |142| **hexcore-minidump** | — | Yes | `minidump.parse`, `minidump.threads`, `minidump.modules`, `minidump.memory` |143| **hexcore-report-composer** | 1.0.0 | Yes | `pipeline.composeReport` — aggregates reports into unified Markdown |144| **hexcore-common** | — | N/A | Utility library (formatBytes, loadNativeModule, etc.) |145146---147148## Pipeline Automation149150### Creating Jobs1511521. **From preset:** Run `hexcore.pipeline.createPresetJob` — choose quick-triage, full-static, or ctf-reverse1532. **Manual:** Create `.hexcore_job.json` in workspace root (see `docs/HEXCORE_JOB_TEMPLATES.md`)1543. **Save profile:** Run `hexcore.pipeline.saveJobAsProfile` to store in `.hexcore_profiles.json`155156### Running Jobs157158- **Auto:** HexCore watches `.hexcore_job.json` and runs on create/change159- **Manual:** Run `hexcore.pipeline.runJob`160- **Validate first:** Run `hexcore.pipeline.validateJob` for preflight check161- **Conditional branching:** Use `onResult` in pipeline steps to skip, goto, abort, or log based on step output (v3.7.1)162163### Job Contract164165Every headless command receives:166- `file` — path to target binary167- `quiet` — suppress UI notifications168- `output` — `{ path, format }` for writing results169170### Output171172Jobs produce in `outDir`:173- `hexcore-pipeline.log` — execution log with timestamps174- `hexcore-pipeline.status.json` — structured status per step (ok/failed/timed-out)175- Per-step output files (JSON or MD)176177---178179## Architecture Support Matrix180181| Component | x86 | x64 | ARM | ARM64 | MIPS |182|-----------|-----|-----|-----|-------|------|183| Disassembly (Capstone) | Yes | Yes | Yes | Yes | Yes |184| Emulation (Unicorn) | Yes | Yes | Yes | Yes | Yes |185| IR Lifting (Remill) | Yes | Yes | No | Yes | No |186| Assembly (LLVM MC) | Yes | Yes | Yes | Yes | Yes |187| Debugger (full) | Yes | Yes | No | Yes | No |188| PE Analysis | Yes | Yes | No | No | No |189| Minidump | Yes | Yes | No | No | No |190| buildFormula | Yes | Yes | No | No | No |191192---193194## Known Gaps (Critical for Agents)1951961. ~~**Debugger interactive commands still need UI**~~ — **MOSTLY RESOLVED**: `emulateFullHeadless` provides full headless emulation (load → run → collect → dispose) without UI. `writeMemoryHeadless`, `setRegisterHeadless`, `setStdinHeadless`, and `disposeHeadless` fill remaining gaps. Only `emulateWithArch` (manual arch picker) remains interactive.1972. ~~**Debugger ARM64 ELF is incomplete**~~ — **RESOLVED in v3.5.1**: Full ARM64 DebugEngine with stack initialization, process stack layout (argc/argv via X0/X1/X2), SVC syscall handler, register state mapping, and 20+ Linux syscalls.1983. **Debugger + static ELF** — statically-linked binaries have no PLT stubs, so LinuxApiHooks cannot intercept libc calls. Only direct syscall interception works (and only for x86/x64/ARM64).1994. **buildFormula is x86/x64 only** — the register regex doesn't recognize ARM64 registers (x0-x30, sp, lr). *(ARM64 formulaBuilder added in v3.5.1 but limited to 15 mnemonics)*2005. ~~**No ELF analyzer extension**~~ — **RESOLVED in v3.5.2**: `hexcore-elfanalyzer` provides full ELF analysis (sections, segments, symbols, security mitigations).2016. ~~**Base64 decode has no headless mode**~~ — **RESOLVED in v3.5.2**: `hexcore.base64.decodeHeadless` is pipeline-safe.2027. ~~**Hex viewer has no headless dump**~~ — **RESOLVED in v3.5.2**: `hexcore.hexview.dumpHeadless` and `hexcore.hexview.searchHeadless` are pipeline-safe.2038. ~~**Strings XOR is 1-byte only**~~ — **RESOLVED in v3.5.2**: `extractAdvanced` now supports multi-byte XOR (2, 4, 8, 16 bytes), rolling XOR, and XOR with increment.2049. **Prebuilds are win32-x64 only** — Linux/macOS need `node-gyp rebuild` fallback.20510. **Rellic is DEPRECATED** — Superseded by Helix MLIR engine in v3.7.0. Remains functional for backward compatibility but will be removed in v3.8.0. Use `hexcore.helix.decompile` / `hexcore.helix.decompileIR` instead.206207---208209## What Agents CAN Do2102111. **Create `.hexcore_job.json`** files and run analysis via `hexcore.pipeline.runJob`2122. **Use `onResult` conditional branching** in pipeline steps to build adaptive workflows (skip, goto, abort, log)2133. **Read pipeline output** from `hexcore-pipeline.status.json` and step output files2144. **Interpret results** — entropy reports, string extractions, YARA matches, IOC lists2155. **Validate jobs** with `hexcore.pipeline.validateJob` before execution2166. **Use presets** via `hexcore.pipeline.createPresetJob` for quick setup2177. **Search strings headlessly** via `hexcore.disasm.searchStringHeadless`2188. **Export assembly headlessly** via `hexcore.disasm.exportASMHeadless`2199. **Analyze ELF binaries** via `hexcore.elfanalyzer.analyze` (sections, segments, symbols, security)22010. **Decode Base64** via `hexcore.base64.decodeHeadless`22111. **Dump hex ranges** via `hexcore.hexview.dumpHeadless`22212. **Search hex patterns** via `hexcore.hexview.searchHeadless`22313. **Run full emulation headlessly** via `hexcore.debug.emulateFullHeadless` with permissive memory mapping, PRNG modes, side-channel analysis, memory dumps, and breakpoint auto-snapshots22414. **Write emulation memory** via `hexcore.debug.writeMemoryHeadless`22515. **Set CPU registers** via `hexcore.debug.setRegisterHeadless`22616. **Set STDIN buffer** via `hexcore.debug.setStdinHeadless`22717. **Dispose emulation sessions** via `hexcore.debug.disposeHeadless`22818. **Save/restore emulation snapshots** via `hexcore.debug.snapshotHeadless` / `restoreSnapshotHeadless`22919. **Export API call traces** via `hexcore.debug.exportTraceHeadless`23020. **Compose unified reports** via `hexcore.pipeline.composeReport`23121. **Filter junk instructions** via `filterJunk: true` in `analyzeAll` / `disassembleAtHeadless` args23222. **Detect VM obfuscation** via `detectVM: true` in `analyzeAll` args23323. **Detect PRNG patterns** via `detectPRNG: true` in `analyzeAll` args23424. **Dump and disassemble runtime memory** via `dumpAndDisassemble` for analyzing decrypted code23525. **Decompile to pseudo-C** via `hexcore.helix.decompile` (one-step) or `liftToIR` + `hexcore.helix.decompileIR` (two-step)236237## What Agents CANNOT Do2382391. ~~**Start emulation**~~ — **RESOLVED**: Use `hexcore.debug.emulateFullHeadless` (or aliases `hexcore.debug.emulate.full` / `hexcore.debug.run`) for headless emulation. Interactive `emulateWithArch` still requires UI for manual arch selection.2402. **See webviews** — CFG graph, hex viewer, debugger view are visual only2413. **Use interactive commands** — file pickers, input boxes, quick-picks2424. **Patch binaries** — `patchInstruction`, `nopInstruction`, `savePatchedFile` need the disassembler UI open2435. **Run YARA quick scan** — requires prior UI context244245---246247## Workflow: Static Analysis248249```2501. hexcore.filetype.detect → Identify file type2512. hexcore.hashcalc.calculate → Compute hashes (VT lookup)2523. hexcore.entropy.analyze → Detect packing/encryption2534. hexcore.strings.extract → Extract strings2545. hexcore.strings.extractAdvanced → XOR deobfuscation (1-byte + multi-byte + rolling + increment) + stack strings2556. hexcore.base64.decodeHeadless → Detect Base64 encoded strings2567. hexcore.hexview.dumpHeadless → Inspect file header bytes2578. hexcore.peanalyzer.analyze → PE headers/imports (PE files only)2589. hexcore.elfanalyzer.analyze → ELF sections/segments/symbols/security (ELF files only)25910. hexcore.disasm.analyzeAll → Deep disassembly + xrefs26011. hexcore.yara.scan → Threat detection26112. hexcore.ioc.extract → IOC extraction26213. hexcore.pipeline.composeReport → Unified report263```264265## Workflow: CTF Reverse Engineering266267```2681. hexcore.filetype.detect → Verify binary format2692. hexcore.disasm.analyzeAll → Function discovery + xrefs2703. hexcore.disasm.exportASMHeadless → Full disassembly export2714. hexcore.disasm.searchStringHeadless → Find flag patterns2725. hexcore.strings.extractAdvanced → Find obfuscated strings (multi-byte XOR, rolling, increment)2736. hexcore.base64.decodeHeadless → Find Base64 encoded data2747. hexcore.hexview.searchHeadless → Search for flag byte patterns2758. hexcore.disasm.buildFormula → Extract key computations (x86/x64 only)276```277278## Workflow: Dynamic Analysis (Emulation)279280```2811. hexcore.debug.emulateFullHeadless → Single-shot emulation (recommended for pipeline jobs)282 Args: { file, arch?, stdin?, maxInstructions?, breakpoints?, keepAlive?,283 permissiveMemoryMapping?, prngMode?, prngSeed?,284 collectSideChannels?, memoryDumps?, breakpointConfigs?, output? }285 Returns: FullEmulationResult with registers, apiCalls, stdout, memoryRegions,286 crash status, snapshots, dumps, sideChannels287288For advanced multi-step emulation (keepAlive: true):2892. hexcore.debug.emulateFullHeadless → Start with keepAlive: true2903. hexcore.debug.writeMemoryHeadless → Patch memory (base64 or 0x hex data)2914. hexcore.debug.setRegisterHeadless → Modify CPU registers2925. hexcore.debug.setStdinHeadless → Inject STDIN input2936. hexcore.debug.snapshotHeadless → Save state checkpoint2947. hexcore.debug.disposeHeadless → Clean up session295```296297---298299## File Format Support300301| Format | Extensions | PE Analysis | ELF Analysis | Disassembly | Emulation |302|--------|-----------|-------------|--------------|-------------|-----------|303| PE32 | .exe, .dll | Yes | No | Yes (x86) | Yes |304| PE64 | .exe, .dll | Yes | No | Yes (x64) | Yes |305| ELF32 | .elf, .so, .o | No | Yes | Yes (x86/ARM) | Yes |306| ELF64 | .elf, .so | No | Yes | Yes (x64/ARM64/MIPS) | Yes (worker isolated) |307| Raw | .bin, .raw | No | No | Yes (default x64) | Yes |308| Minidump | .dmp | N/A | N/A | N/A | N/A |309310---311312*HexCore v3.7.1 "Dynamic Intelligence + Pipeline Branching" — Powered by Capstone 1.3.2 / Unicorn 1.2.1 / LLVM MC 1.0.0 / Remill 0.1.2 / Helix 0.5.0*313314---315> Converted and distributed by [TomeVault](https://tomevault.io/claim/lxrdknowkill) — claim your Tome and manage your conversions.316<!-- tomevault:4.0:skill_md:2026-04-11 -->