百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
M

mcsema

> 编程语言
开源

用于将x86、amd64、aarch64、sparc32和sparc64程序二进制文件提升为LLVM位码的框架

2.8K stars0 点赞1 次浏览
访问官网GitHub

工具介绍

用于将x86、amd64、aarch64、sparc32和sparc64程序二进制文件提升为LLVM位码的框架

# McSema [](https://empireslacking.herokuapp.com/)

McSema 是一个可执行文件提升器。它将可执行二进制文件从原生机器码转换为 LLVM 位码。LLVM 位码是一种程序的[中间表示](https://en.wikipedia.org/wiki/Intermediate_representation)形式,最初是为[可重定向的 LLVM 编译器](https://llvm.org)而创建的,但它也非常适用于执行那些无法直接在可执行二进制文件上进行的程序分析方法。 McSema使分析人员能够发现并追溯性地加固二进制程序以防范安全漏洞,独立验证供应商源代码,并生成具有高代码覆盖率的应用程序测试。McSema不仅适用于静态分析。提升后的LLVM位码还可以[使用libFuzzer进行模糊测试](https://github.com/lifting-bits/mcsema/blob/master/docs/UsingLibFuzzer.md),libFuzzer是一种基于LLVM的插桩模糊测试器,否则需要目标源代码。提升后的位码甚至可以被[编译](https://github.com/lifting-bits/mcsema/blob/master/docs/UsingLibFuzzer.md)回[可运行的程序](https://github.com/lifting-bits/mcsema/blob/master/docs/McSemaWalkthrough.md)!这一过程被称为静态二进制重写、二进制翻译或二进制重编译。 McSema 支持加载 Linux (ELF) 和 Windows (PE) 可执行文件,并支持大多数 x86 和 amd64 指令,包括整数、X87、MMX、SSE 和 AVX 操作。AARCH64 (ARMv8) 指令支持正在积极开发中。 使用 McSema 有一个两步骤的过程:控制流恢复和指令翻译。控制流恢复使用 `mcsema-disass` 工具来完成,该工具依赖 IDA Pro 来反汇编二进制文件并生成控制流图。然后使用 `mcsema-lift` 工具来执行指令翻译,该工具将控制流图转换为 LLVM 位码。在 `mcsema-lift` 的指令翻译功能的实现中,使用了 [`remill` 库](https://github.com/lifting-bits/remill)。`remill` 的开发是基于对 McSema 的重构和改进,最初是在 `mcsema` 1.0 版本中实现的。

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

C++aarch64binary-analysisidallvm

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言