Skip to content
This repository has been archived by the owner on Aug 23, 2022. It is now read-only.

Version 2.0.0

Compare
Choose a tag to compare
@mike-myers-tob mike-myers-tob released this 04 Dec 22:40
· 222 commits to master since this release

McSema has made the jump to version 2.0! The reason for this big version update is because we have changed a lot of the design under the hood. We've separated instruction semantics definitions (now implemented in our library, Remill) from the use of those definitions (McSema 2.0 itself). Now, semantics can be explicitly expressed directly in C++, and automatically turned into bitcode by the clang compiler.

The switch to using Remill has enabled us to work on making McSema 2.0 truly multi-architecture, with support for x86, AMD64, and AArch64 from the start. It has also enabled us to implement complex instructions like the MMX, SSE2, SSE3, and AVX extension instructions in the X86 instruction set.

Other notable changes since the last release:

  • Fixed Win32 build this is not done
  • Great progress on various forms of reference resolution
  • Major improvements to jump table recognition
  • Big improvements to CFG recovery heuristics
  • Changed license to Apache 2.0
  • CMake refactor, to allow Remill to include McSema as a submodule
  • Improved / broader LLVM version compatibility (3.5+)
  • AArch64 support has begun
  • Minor improvements to handling of code with C++ exceptions
  • Improvements to handling lifting of statically linked ELFs that also have thunks in them
  • Initial support for TLS (Thread Local Storage)
  • New abilities to recover local and global variables
  • Many bug fixes