首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >McSema技术升级:从二进制到LLVM比特码的现代化转换

McSema技术升级:从二进制到LLVM比特码的现代化转换

原创
作者头像
qife122
发布2025-08-28 14:29:07
发布2025-08-28 14:29:07
1470
举报

McSema:我来提升它 - Trail of Bits博客

Peter Goodman

2017年3月14日

darpa, mcsema

我们的x86机器码到LLVM比特码二进制转换工具McSema刚刚完成了重大升级。上周我们成功举办了黑客马拉松,显著提升了McSema的可用性、文档质量和代码质量。现在使用McSema分析和逆向工程二进制文件比以往任何时候都更加容易。

成长阶段

我们日常使用McSema进行以下工作:

  • 发现并事后加固二进制程序以防范安全漏洞
  • 独立验证供应商源代码
  • 生成高代码覆盖率的应用程序测试

该工具不仅是学术研究的一部分,也被应用于DARPA项目。我们(及其他团队)持续扩展其功能以分析日益复杂的程序。

自2014年开源以来,McSema经历了快速成长期。当时LLVM 3.5还是新兴技术,McSema基于此版本构建,并持续使用至2016年。随着时间推移,我们产生了现代化改造的需求。上周通过McSema可用性黑客马拉松,我们成功解决了这些发展中的痛点。

收益回报

我们对McSema进行了全面改进:

  • 代码更清晰
  • 安装更简便且更具可移植性
  • 运行速度更快
  • 生成的代码质量更高

性能提升

  • 构建加速:通过移除废弃代码和 unnecessary 库,重组目录结构使其更具描述性
  • 比特码生成加速:改进控制流图遍历方式,移除Boost依赖,简化比特码生成流程
  • 生成更精简的比特码:不再在函数入口/出口存储和溢出寄存器上下文,标志操作使用更快的自然位宽操作替代位域,支持通过优化消除未使用的计算

现代化升级

  • 迁移至标准版LLVM 3.8(原使用自定义修改的LLVM 3.5)
  • 使用现代C++11特性完全替代Boost依赖

简化改进

  • 新版命令行接口更统一易用:mcsema-disass反汇编二进制文件,mcsema-lift将反汇编转换为LLVM比特码
  • 移除了自定义二进制反汇编器bin_descend,现仅支持使用IDA Pro作为反汇编引擎的解码器
  • 代码布局更直观,CMake构建脚本更精简
  • 采用无外部依赖的集成测试框架替代旧测试框架

新特性

  • 支持更多指令集(持续征集指令语义添加帮助)
  • 通过mcsema-lift --list-supported命令显示支持的指令清单
  • 新增集成测试框架支持全面翻译测试,提供测试添加指南

文档完善

新版文档详细说明如何安装、使用、测试、扩展和调试McSema代码库,包含常见错误解决方案,显著降低第三方开发者的参与门槛。

运行时优化

McSema不仅支持静态分析,提升后的比特码可重新编译为可运行程序。我们改进了运行时性能,降低内存使用,并增强与原生Windows/Linux代码的复杂交互能力。

未来规划

我们将持续投入McSema开发:

  • 扩展对大型复杂软件的支持
  • 计划采用Binary Ninja替代IDA Pro进行控制流恢复
  • 增加ARM二进制码到LLVM比特码的转换支持
  • 拓展至移动应用和嵌入式固件分析领域

我们正在招募对McSema潜力感兴趣的实习生。入门建议:

  1. 尝试实战教程转换真实Linux二进制文件
  2. 探索如何使libFuzzer等工具处理二进制文件
  3. 联系我们并提出发展建议——若方案可行且计划完善,我们将提供资金支持实现

欢迎通过Twitter、LinkedIn、GitHub、Mastodon或Hacker News分享本文


页面内容目录:成长阶段、收益回报、性能、现代化、简化改进、新特性、文档、运行时、未来规划、最新文章

© 2025 Trail of Bits.

采用Hugo和Mainroad主题生成

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • McSema:我来提升它 - Trail of Bits博客
    • 成长阶段
    • 收益回报
      • 性能提升
      • 现代化升级
      • 简化改进
      • 新特性
      • 文档完善
      • 运行时优化
    • 未来规划
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档