All Projects → Mithreindeir → Dynzasm

Mithreindeir / Dynzasm

Licence: Apache-2.0 License
X86/X64/ARM/MIPS Assembler/Disassembler/Decomposer Library

Programming Languages

c
50402 projects - #5 most used programming language
TeX
3793 projects
ruby
36898 projects - #4 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to Dynzasm

JGeckoU
Wii U RAM TCP Debugger Client/Cheat Code Manager
Stars: ✭ 54 (+157.14%)
Mutual labels:  disassembler
ida-bpf-processor
BPF Processor for IDA Python
Stars: ✭ 41 (+95.24%)
Mutual labels:  disassembler
ded
DOS Executable disassembler
Stars: ✭ 27 (+28.57%)
Mutual labels:  disassembler
Capstone.NET
.NET Core and .NET Framework binding for the Capstone Disassembly Framework
Stars: ✭ 108 (+414.29%)
Mutual labels:  disassembler
java-class-tools
Read and write java class files in Node.js or in the browser.
Stars: ✭ 27 (+28.57%)
Mutual labels:  disassembler
ethdasm
Tool for auditing Ethereum contracts
Stars: ✭ 52 (+147.62%)
Mutual labels:  disassembler
bmod
bmod parses binaries for modification/patching and disassembles machine code sections.
Stars: ✭ 12 (-42.86%)
Mutual labels:  disassembler
fadec
A fast and lightweight decoder for x86 and x86-64 and encoder for x86-64.
Stars: ✭ 44 (+109.52%)
Mutual labels:  disassembler
agsutils
contains utils for AGS: game extractor, repacker, disassembler and assembler
Stars: ✭ 30 (+42.86%)
Mutual labels:  disassembler
fasmi
F# -> ASM disassembler
Stars: ✭ 168 (+700%)
Mutual labels:  disassembler
gdt helper
Ghidra Data Type (GDT) Helper
Stars: ✭ 24 (+14.29%)
Mutual labels:  disassembler
juniEmu
Emulator interface for ARM 32-bit
Stars: ✭ 32 (+52.38%)
Mutual labels:  disassembler
faucon
NVIDIA Falcon Microprocessor Suite
Stars: ✭ 28 (+33.33%)
Mutual labels:  disassembler
Azote
Fast and lightweight AArch64 disassembler.
Stars: ✭ 24 (+14.29%)
Mutual labels:  disassembler
pac-man-emulator
🕹 An emulator for the Pac-Man arcade machine (Zilog Z80 CPU) for Win/Mac/*nix and Xbox One.
Stars: ✭ 20 (-4.76%)
Mutual labels:  disassembler
SDA
SDA is a rich cross-platform tool for reverse engineering that focused firstly on analysis of computer games. I'm trying to create a mix of the Ghidra, Cheat Engine and x64dbg. My tool will combine static and dynamic analysis of programs. Now SDA is being developed.
Stars: ✭ 98 (+366.67%)
Mutual labels:  disassembler
gas
A tool that transforms functions from object files into Go assembly. This repository has migrated to https://gitlab.com/opennota/gas
Stars: ✭ 18 (-14.29%)
Mutual labels:  disassembler
pyc2bytecode
A Python Bytecode Disassembler helping reverse engineers in dissecting Python binaries by disassembling and analyzing the compiled python byte-code(.pyc) files across all python versions (including Python 3.10.*)
Stars: ✭ 70 (+233.33%)
Mutual labels:  disassembler
BEFA-Library
High-level library for executable binary file analysis
Stars: ✭ 14 (-33.33%)
Mutual labels:  disassembler
semblance
Disassembler for Windows executables. Supports 16-bit NE (New Executable), MZ (DOS), and PE (Portable Executable, i.e. Win32) files.
Stars: ✭ 110 (+423.81%)
Mutual labels:  disassembler

Dynzasm

Build Status Coverity Scan Build Status

Dynzasm is a fast lightweight disassembly library written in c99 code with no external dependencies. Disassembly is structured as trees with arbitrary formatting strings, allowing detailed disassembly information and making it easy to support custom syntaxes.

ARCH Disassembly SUPPORT Assembler Support
X86 Most (excluding extensions) Partial (No fp, or isa ext)
X64 Most (excluding extensions) Partial (No fp, or isa ext)
ARM Partial None (WIP)
MIPS Most None (WIP)

Includes sample commandline utility

./dynzasm --help
Usage: ./dynzasm options filename
	--arch=<architecture> Set architecture to be disassembled (x86, arm, or mips
	--mode=<mode> Set the architecture mode (32 or 64)
	--entry=<addr> Set a starting address
	-a convert ascii to hex
	-A Assemble
If no file is specified stdin will be used
Must specify architecture and mode
echo "55 48 89 e5 48 83 ec 70" | ./dynzasm --arch=x86 --mode=64 -a --addr=0x2172 
0x002172:	55                            	push	rbp
0x002173:	48 89 e5                      	mov	rbp, rsp
0x002176:	48 83 ec 70                   	sub	rsp, 0x70

An example of using the assembler from stdin, and piping it into the disassembler.

./dynzasm --arch=x86 --mode=64 -A | ./dynzasm --arch=x86 --mode=64 -a
push rbp
mov rbp, rsp
mov eax, 0
ret
00000000:	55                            	push	rbp
0x000001:	48 8b ec                      	mov	rbp, rsp
0x000004:	b8 00 00 00 00                	mov	eax, 0
0x000009:	c3                            	ret

It is also very easy to use as a library. Detailed semantics from disassembly for easy analysis coming soon.

#include "disas.h"

int main()
{
	
  struct disassembler *ds = ds_init(X86_ARCH, MODE_64B);
  unsigned char bytes[] =  "\x55\x48\x89\xe5\xb8\x00\x00\x00\x00\xc3";

  ds_decode(ds, bytes, sizeof(bytes)-1, 0x0);
  struct dis *dis = NULL;
  
  DS_FOREACH(ds, dis) {
    printf("%#08lx:\t%s\t%s\n", dis->address, dis->mnemonic, dis->op_squash);
  }
  
  ds_destroy(ds);
  return 0;
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].