Skip to content
Julian Kranz edited this page Mar 3, 2016 · 3 revisions

GDSL Hacker's Corner

The GDSL toolkit consist of multiple parts:

  • The GDSL compiler
  • Specifications for instruction decoders and corresponding semantic translators
  • A multiplex library that allows an application to load a decoder as shared library at runtime.

Inside the repository, there is more:

  • Demo applications
  • Libraries

The following information is stale

When compiling the toolkit one specific decoder and semantic translator is generated. Depending on the host environment a range of demo applications and libraries are built. While is the decoder is always installed when issuing a "make install", installing the demos and libraries is optional. Note that the compiler itself is currently not installed.

Demo Applications

The toolkit includes a number of demo applications that show how to interface between C and GDSL programs and demonstrate the functionality offered by the given specifications. The following demo applications are included:

Tool name Description
decoder-cli A command line instruction decoder
semantics-cli A command line instruction decoder and semantic translator
semantics-opt A command line tool that decodes binary instructions, translates them into RReil and optimizes the result
semantics-cli-dynamic Like semantics-cli, but allows to dynamically load an architecture-specific frontend at runtime
semantics-cif-cli A tool demonstrating the RReil C interface
sweep A tool that is able to decoder and translate binary files (with and without an ELF header); the tool records its runtime
liveness-sweep A demonstration and benchmarking tool for the liveness analysis performed on RReil code
x86-test-runner A debugging tool for the X86 specification which uses automatic test case generation
x86-test-stats-runner A correctness evaluation tool for the X86 specification which uses automatic test case generation

Libraries

In order to enhance code reuseability, the tools share parts of their implementation using libraries. The libraries can also be used by other applications that need to interface with a GDSL decoder or semantic translator. The following libraries are included:

Library name Description
libutil A utility library that contains shared functionality which is independent from the GDSL toolkit
libreadhex A library that facilitates the reading of formatted input
libmemstream The POSIX memstream library for BSD (http://piumarta.com/software/memstream)
libgdwrap A legacy GDSL interface wrapper library
libgdsl-multiplex A C library allowing an application to dynamically load GDSL decoders and semantic translators at runtime
libcgdsl A C library containing data structures and functions for the RReil intermediate language as well as for interfacing with the decoder and the translator
libcppgdsl A C++ library containing data structures and functions for the RReil intermediate language as well as for interfacing with the decoder and the translator
libjgdsl A Java library containing data structures and functions for the RReil intermediate language as well as for interfacing with the decoder and the translator
libx86 A C library that eases the interfacing between that GDSL X86 decoder and user applications
libx86-tester A library that forms the core of the x86-test-runner tool
libx86-generator A simple X86 instruction generator