Metasm is a cross-architecture assembler, disassembler, compiler, linker and debugger. It is written in pure Ruby, with no dependency.
It has some advanced features such as live process manipulation, GCC/Microsoft Visual Studio-compatible preprocessor, automatic backtracking in the disassembler (similar to “slicing”), C headers shrinking, Linux/Windows/remote debugging API interface, a C compiler/decompiler, a gdb-server compatible debugger, and various advanced features.
For now, the following architectures are supported:
- Intel IA32 (16/32/64bits)
The following file formats are supported:
- Raw (for shellcodes)
- MZ, PE/COFF (32 and 64 bits)
- ELF (32 and 64 bits)
- Mach-O (incomplete) and UniversalBinary
- a few other (a.out, xcoff, nds).
Metasm has been integrated into Metasploit, however the Metasploit trunk is not necessarily synced with the latest version.