Assembler library for .NET, assembling runtime-variable strings into machine code for injection

As part of some early prototyping I did on a personal project, I wrote quite a bit of code to do something like this. It doesn't take strings -- x86 opcodes are methods on an X86Writer class. Its not documented at all, and has nowhere near complete coverage, but if it would be of interest, I would be willing to open-source it under the New BSD license.

UPDATE: Ok, I've created that project -- Managed.X86


See this project:

https://github.com/ZenLulz/MemorySharp

This project wraps the FASM assembler, which is written in assembly and as a compiled as Microsoft coff object, wrapped by a C++ project, and then again wrapped in C#. This can do exactly what you want: given a string of x86/x64 assembly, this will produce the bytes needed.

If you require the opposite, there is a port of the Udis86 disassembler, fully ported to C#, here:

https://github.com/spazzarama/SharpDisasm

This will convert an array of bytes into the instruction strings for x86/x64


Take a look at Phoenix from Microsoft Research.

Tags:

C#

Assembly

X86