udis86 is an easy-to-use minimalistic disassembler library (libudis86) for the x86 and x86-64 class 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.

Get sources

Latest Release: udis86-1.7.tar.gz

udis86 is now maintained using the git source code control system. The latest, stable code is available as the master branch in the sourceforge project git repository.
git://udis86.git.sourceforge.net/gitroot/udis86

Get documentation

Reference manual available in $SRC/docs/manual, or browse online.

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.
  • Supports instruction meta-data using XML based decode tables.
  • Generates output in AT&T or INTEL assembler language syntaxes.
  • Supports flexbile input methods: File, Buffer, and Hooks.
  • Reentrant.
  • Clean and very easy-to-use API.

udcli

A front-end incarnation of this library, udcli is a small command-line tool for your quick disassembly needs.
$ echo "65 67 89 87 76 65 54 56 78 89 09 00 87" | udcli -32 -x 
0000000000000000 656789877665    mov [gs:bx+0x6576], eax
0000000000000000 54              push esp
0000000000000000 56              push esi
0000000000000000 7889            js 0x93 
0000000000000000 0900            or [eax], eax 

Author

Udis86 is a creation of Vivek Thampi. 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.

License

Udis86 is an open source project, and is distributed under the terms of the BSD License.

© 2009 Vivek Thampi