McSema二进制转LLVM比特码工具重大升级

Trail of Bits团队宣布对其开源工具McSema进行重大升级,该工具可将x86机器码转换为LLVM比特码,改进包括性能优化、现代化改造、简化使用流程以及增强运行时支持等核心功能提升。

McSema:二进制转LLVM比特码工具重大升级

我们的x86机器码转LLVM比特码工具McSema刚刚完成全面升级。上周举办的开发马拉松显著改善了McSema的易用性、文档质量和代码质量,现在使用McSema分析和逆向工程二进制文件比以往任何时候都更容易。

发展阶段

McSema已成为我们日常工作中不可或缺的工具,它能帮助我们发现并加固二进制程序的安全漏洞、独立验证供应商源代码,以及生成高代码覆盖率的应用测试。该工具不仅应用于学术研究,还参与DARPA项目。自2014年开源以来,我们(及其他贡献者)持续扩展其功能以分析日益复杂的程序。

性能优化

  • 构建速度:通过清理死代码、移除冗余库及优化目录结构,构建系统更简洁
  • 比特码生成:改进控制流图遍历算法,移除Boost依赖,简化比特码生成流程
  • 比特码质量:取消函数入口/出口的寄存器上下文存储,改用原生位宽操作处理标志位,新增惰性生成比特码优化功能

现代化改造

  • 升级至标准版LLVM 3.8(原使用定制版LLVM 3.5)
  • 完全移除Boost依赖,改用C++11现代特性

功能简化

  • 统一命令行接口:mcsema-disass负责反汇编,mcsema-lift执行比特码转换
  • 弃用定制反汇编器bin_descend,统一采用IDA Pro作为反汇编引擎
  • 重构代码结构,精简CMake构建脚本
  • 采用无外部依赖的集成测试框架

新增特性

  • 支持更多指令集(提供指令添加指南)
  • 新增--list-supported命令查看支持指令列表
  • 集成测试框架支持快速添加全面翻译测试

文档完善

全新文档详细说明安装流程、使用方法、测试方案、功能扩展和调试技巧,并包含常见错误解决方案,显著降低第三方开发者的参与门槛。

运行时增强

提升运行效率,大幅降低内存占用,改进与原生Windows/Linux代码的复杂交互能力,使转换后的比特码不仅能用于静态分析,还可重新编译为可执行程序。

未来规划

  • 扩展对复杂软件的支持
  • 计划采用Binary Ninja替代IDA Pro进行控制流恢复
  • 新增ARM架构二进制转LLVM比特码功能
  • 拓展移动应用和嵌入式固件分析场景

我们正在招募对McSema开发感兴趣的实习生。入门者可先尝试Linux二进制转换教程,了解如何使libFuzzer等工具作用于二进制文件。如有创新构想,欢迎联系我们——若方案可行,我们将提供资金支持实现。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计