ronin-code-asm
ronin-code-asm copied to clipboard
A Ruby DSL for crafting assmebly programs and shellcode.
[displacement](https://en.wikipedia.org/wiki/ModR/M#SIB_byte) is the correct terminology wrt x86/x86-64.
Add a common `Operand` base class that all other operand classes inherits from.
Add code generation code which parses the x86 ISA XML file and generates Ruby `Instruction` classes for all instructions. It should also generate one giant `instructions.rb` file which uses `autoload`...
Initialize `Register` using keyword arguments for `width:` and `general_purpose:`.
Rename all methods and instance variables called `width` to `size`.
Add a command which can disassemble a file, a raw string, or a hex escaped string, and print the disassembled instructions. Bonus feature would be to print the instructions with...
Add parsers for parsing assembly source. We could use [racc](https://github.com/ruby/racc) which was also used in [aarch64's `parser.y`](https://github.com/tenderlove/aarch64/blob/main/lib/aarch64/parser.y). We should have separate parsers for ATT and Intel syntax. We may be...
Use the ISA XML codegen functionality from #27 to generate disassemblers for x86-64 and arm64. This will allow us to disassemble raw shellcode back into a stream of instructions and...
Add a pure-Ruby assembler backend, instead of relying on YASM to produce shellcode. This would likely take the form of having each architecture module define it's own `Assembler` class. These...