Skip to content

TheLibAspect

Rafał Leśniak edited this page Apr 23, 2016 · 1 revision

The ERESI aspect library : libaspect

The ERESI aspect library is a general purpose low-level library dedicated to feature-based, aspect-oriented project modeling written in the C language. It is especially relevant when embedded into a runtime environment such as ERESI, because it makes the project to become reflective by allowing its uniform internal structures to be modified directly from the Eresi language provided you also link with librevm which is the interpreter for such language. Libaspect also provides facilities for the project to auto-profile itself, which has a concrete use in fast-diagnostic debugging of the analysis framework.

The main features of the ERESI aspects library are :

  • A generic and extensive API and data structures for using hash tables.
  • A generic modeling API and data structure called a reflective vector aspect for modular feature-based portability system in the project development.
  • A generic macro system and help API for the auto-profiling of program's functions developed in the C or C++ languages.
  • A complete type definition system for the specification of new data types in the Eresi meta-language and their use in domain specific Intermediate Representation (IR), with a direct use in the realm of reflection, program transformation and type-based decompilation.

Latest news for libaspect

  • June 1 2007 - Added support for type aliasing using typedefs

Portability of libaspect

The ERESI aspect library is not an arcihtecture, binary format, or OS dependant component of ERESI. It is used as a low-level components for all other components in the wish to export the libaspect facilities for modeling, profiling, and reflection of ERESI algorithms and data structures. Thus, the ERESI aspect library can be used by any external project on any OS, architecture, and binary format.

Dependencies

The ERESI aspect library does not depends on any components of the ERESI framework. However, when linking libaspect into a relocatable (.o) file for inclusion in the embedded debugger, we explicely link libaspect with liballocproxy which allow libaspect allocations to be performed in the debugger heap.

Articles featuring librevm

There is currently no article dedicated to libaspect. Documentation can be found in :

  • HOWTO port ERESI using the vectors provided by libaspect.
  • Chapter 5 of the Blackhat article on ERESI : Next generation debuggers for reverse engineering.
Clone this wiki locally