Udis86 is an easy-to-use minimalistic disassembler library (libudis86) for the x86 and AMD64 (x86-64) range of instruction set architectures. The primary intent of the design and development of udis86 is to aid software development projects that entail binary code analysis.
libudis86
- Full support for the x86 and x86-64 (AMD64) range of instruction set architectures.
- Full support for all AMD-V, INTEL-VMX, MMX, SSE, SSE2, SSE3, FPU(x87), and AMD 3Dnow! instructions.
- Supports 16bit, 32bit, and 64bit disassembly modes.
- Generates output in AT&T or INTEL assembler language syntaxes.
- Supports flexbile input methods: File, Buffer, and Hooks.
- Thread-safe and Reentrant.
- Clean and very easy-to-use API.
- Builds on *nix systems, Win32, DJGPP (new), Standalone, etc.
udcli
A front-end incarnation of this library, udcli is a small command-line tool for your quick disassembly needs.
Author
Udis86 is a creation of Vivek Mohan. You can reach me at vivek[at]sig9[dot]com. Please let me know if you are using udis86, have ideas for it, or would like to comment on it.
CHANGES
* [Aug/05/07] Patch for DJGPP (Thanks to Robert Riebisch)
Removed "test" Target in tot Makefile (Thanks to Robert Riebisch)
New target:tests.
Misc. clean up top-of-tree Makefile.
Use config.h for package version
Review/cleanup FP Opcode map.
* [Dec/18/06] Fixed: Printf warnings.
Fixed: set_input_buffered to set_input_buffer in documentation.
Added support for INTEL VMX instructions.
API addition: ud_set_vendor(): UD_VENDOR_{INTEL, AMD}.
Fixed: Handling of invalid combination of bytes. No more input re-syncing.
Added Makefiles for win32 build. (Thanks to Xi Hang).
Added Makefile.standalone for "Standalone Udis86".
Fixed: u->inp_end initialization bug.
Fixed: swapgs only in 64bit mode.
* [Oct/27/06] 0xF1 is now int1.
Fixed: cast prefix for Group1_op80/82/C0/D0 instructions.
Fixed: lmsw
Added support for Udis86 Standalone.
* [Sep/18/06] Fixed: Missing support for o32 for in/out instructions.
* [Jul/26/06] Fixed: Missing REX.W in Group1_op83 instructions.
* [Jul/16/06] Fixed: rex.b on [rip+disp]
* [Jul/15/06] Fixed: Wrongly printing "loopnz" as "loopn" (Thanks to Sanjay Patel)
Fixed: Wrongly decoding "out Ib, AL" ((Thanks to Sanjay Patel)
* [Jun/8/06] Missing instructions added. (As per AMD64 Manual Vol3 Rev 3.11
Dec 2005)
Fixed minor decoder issues. (Thanks to Sanjay Patel)
Fixed issues with input stream buffer. (Thanks to Sanjay Patel)
* [May/18/06] Fixed issues with handling of 64-bit values.
Fixed bug in syntax generation for immediate operands in branch
instructions.
Fixed decoding of (G, W) operands.
* [May/12/06] Added support for data types in MS VC++.
* [May/11/06] Fixed portability issues concerning inp_uintXX functions in
input.c and 64-bit casting in syn-intel/syn-att.c (Thanks to
Sanjay Patel)
© 2006,2007 Vivek Mohan