Loading...

Fast disassembler producing reassemblable assembly code using Datalog
Fast disassembler producing reassemblable assembly code using Datalog
DDisasm is a disassembler that produces assembly code accurate enough to be reassembled. The tool is implemented using the Datalog (souffle) declarative logic programming language to compile disassembly rules and heuristics. The disassembly process begins by parsing ELF file information and decoding a superset of possible instructions to create an initial set of datalog facts. These facts are analyzed to identify code locations, symbolization, and function boundaries. The results of this analysis produce a refined set of datalog facts that are translated to the GTIRB (GrammaTech Intermediate Representation for Binaries) intermediate representation for binary analysis and reverse engineering. The GTIRB pretty printer can be used to convert the GTIRB output to reassemblable assembly code. The tool is available as a Docker image for quick deployment and testing. DDisasm was developed with support from the Navy and the Office of Naval Research. The underlying research was published in a USENIX paper titled "Datalog Disassembly" which received a distinguished paper award.
Common questions about GrammaTech DDisasm including features, pricing, alternatives, and user reviews.
GrammaTech DDisasm is Fast disassembler producing reassemblable assembly code using Datalog, developed by GrammaTech. It is a Security Operations solution designed to help security teams with Binary Analysis, Open Source, Reverse Engineering.
An open source .NET deobfuscator and unpacker that restores packed and obfuscated assemblies by reversing various obfuscation techniques.
Ghidra is an NSA-developed software reverse engineering framework that provides disassembly, decompilation, and analysis tools for examining compiled code across multiple platforms and processor architectures.
PINT is a PIN tool that enables Lua scripting for Intel's PIN dynamic instrumentation framework, allowing researchers to inject custom code during binary analysis processes.
A declarative language for describing binary data structures that compiles into parsers for multiple programming languages.