hdis86: Interface to the udis86 disassembler for x86 and x86-64 / AMD64

[ bsd3, disassembler, foreign, language, library, reverse-engineering ] [ Propose Tags ]

hdis86 is an interface to the udis86 disassembler, which decodes machine code for 16-, 32-, and 64-bit x86 and x86-64 / AMD64 processors. hdis86 provides an instruction stream as a Haskell algebraic data type, suitable for inspection by pattern matching. It also provides metadata such as assembly syntax in Intel or AT&T flavors.

This library exposes three layers of wrapping:

  • The Pure module has the simplest interface, effectively ByteString -> [Instruction].

  • The IO module exposes an imperative API closely matching the udis86 state machine, while providing Haskellish types and automatic resource management.

  • The C module is a direct import of the udis86 library, with C types and conventions.

Many users can simply import Hdis86.

The Incremental module provides disassembly of lazy ByteStrings, and a function for building other incremental operations.

By default, hdis86 will statically link a built-in copy of udis86-1.7, which is provided by its author under a similar BSD license. See inside the tarball for more information. If you have udis86 installed on your system, you can instead link dynamically using cabal configure --flags=external-udis86. In that case see also doc/customizing.txt.

This code is available on GitHub at https://github.com/kmcallister/hdis86.

The udis86 project website is located at http://udis86.sourceforge.net/.

New in version 0.2:

  • Disassembly of lazy ByteStrings

  • A function for building other incremental operations

  • Record selectors on Instruction

  • QuickCheck Arbitrary instances for Instruction and related types

[Skip to Readme]


Automatic Flags

Dynamically link to the system's copy of udis86.


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS] 0.1, 0.2
Dependencies base (>=3 && <5), bytestring (>=0.9), containers (>=0.3), QuickCheck (>=2.4) [details]
License BSD-3-Clause
Author Keegan McAllister <mcallister.keegan@gmail.com>
Maintainer Keegan McAllister <mcallister.keegan@gmail.com>
Category Disassembler, Language, Foreign, Reverse Engineering
Home page https://github.com/kmcallister/hdis86
Source repo head: git clone git://github.com/kmcallister/hdis86.git
Uploaded by KeeganMcAllister at 2011-08-28T15:58:11Z
Reverse Dependencies 2 direct, 0 indirect [details]
Downloads 2018 total (6 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for hdis86-0.2

[back to package description]
hdis86 is a Haskell interface to the udis86 disassembler, which decodes machine
code for 16-, 32-, and 64-bit x86 and x86-64 / AMD64 processors.  Most of the
documentation is provided in the form of Haddock-generated HTML, which can be
produced by running

  $ cabal configure && cabal haddock --hyperlink-source

This will produce HTML documentation under dist/doc/html/hdis86.

See also the files in doc/ and the Hackage page at
http://hackage.haskell.org/package/hdis86 .

The udis86 website is http://udis86.sourceforge.net/ .