# lifting-bits/mcsema

Framework for lifting x86, amd64, aarch64, sparc32, and sparc64 program binaries to LLVM bitcode

Repository: https://github.com/lifting-bits/mcsema
Canonical: https://ross.abutalabs.com/products/mcsema
Homepage: https://www.trailofbits.com/expertise/mcsema
Language: C++
License: AGPL-3.0
License Family: copyleft
Topics: x86, x86-64, aarch64, llvm, llvm-ir, llvm-bitcode, ida, binary-analysis, sparc, sparc64
Archived: true
Last push: 2022-04-26T13:43:28+00:00

## Health v2 (maintenance only)
Score: 10/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 0, release rhythm 8, longevity 100
- inputs: {"age_days": 4418, "days_push": 1590, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: archived
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 2787, forks 349 (observed 2026-08-28T04:07:21.964128+00:00)

## What it is
McSema is a framework that lifts native x86, amd64, aarch64, sparc32, and sparc64 executable binaries (ELF and PE) into LLVM bitcode. It works in two steps—control flow recovery via IDA Pro disassembly and instruction translation via the remill library—enabling program analysis, fuzzing, and binary recompilation.

## Use cases
- lift a binary to llvm bitcode for analysis
- analyze a stripped executable without source code
- fuzz a closed-source binary with libFuzzer
- recompile a binary into a runnable program with modifications
- retroactively harden binaries against security bugs
- validate vendor binaries against expected behavior

## When to choose
- you need to analyze or transform binaries without source code
- you want to apply LLVM-based tools (optimizers, fuzzers, sanitizers) to native binaries
- you need to lift x86, amd64, aarch64, or sparc binaries to bitcode

## When to avoid
- you need a maintained tool with recent updates (latest release 2022)
- you cannot use IDA Pro for control flow recovery
- you need lifting for architectures beyond x86, amd64, aarch64, and sparc

## Facets
- artifact type: framework
- maturity: maintenance
- function: reverse-engineering, compiler, security, parser
- domain: reverse-engineering, security, compilers, developer-tools
- platform: windows, cpp
- tags: binary-lifting, llvm-bitcode, binary-analysis, ida-pro, binary-translation, static-binary-rewriting, remill, linux, macos

## Member repositories
- lifting-bits/mcsema (main) score 10

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:07:21.964128+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T08:16:00.277174+00:00, confidence not recorded.
  - readme: https://github.com/lifting-bits/mcsema (fetched 2026-08-28T04:07:21.964128+00:00, sha 2b7675105df1)
- Data as of 2026-08-30T08:39:29.467469+00:00.
