The hdis86 package
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.
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/.
[Skip to ReadMe]
|Change log||None available|
|Dependencies||base (>=3 && <5), bytestring (>=0.9), containers (>=0.3) [details]|
|Author||Keegan McAllister <firstname.lastname@example.org>|
|Maintainer||Keegan McAllister <email@example.com>|
|Category||Disassembler, Language, Foreign, Reverse Engineering|
|Uploaded||Sun Mar 6 20:47:57 UTC 2011 by KeeganMcAllister|
|Downloads||446 total (22 in last 30 days)|
|Status||Docs uploaded by user|
Build status unknown [no reports yet]
|external-udis86||Dynamically link to the system's copy of udis86.||Disabled||Automatic|
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
For package maintainers and hackage trustees