Tools for Low-Level Program Representation Graphs

We present a complete overview of g4re, including a sample usage that shows a simple program analysis, in this chapter.




In the figure above, we illustrate the architecture of our tool chain for reverse engineering C++ programs. We indicate ``use'' dependencies with dashed lines. We illustrate implementation artifacts, which we indicate with bold text, and third party libraries, which we indicate with italic text, at the left of the figure. We illustrate the ASG module, generic, as a package in the large g4re package at the right of the figure. We illustrate the schema and serialization modules, schema and serialization, as packages in the large cppinfo package at the center of the figure. We illustrate the transformation module, g4xformer, as a package in the large g4re package at the right of the figure. Finally, we illustrate the linking module and the API module, linker and api, as packages in the large cppinfo package at the center of the figure. We illustrate UML activity diagrams that show the processes of creating input files for the tool chain on the input page.

Tools for Middle-Level Program Representation Graphs




In the figure above, we illustrate the usage of the api module. We have written two user programs to construct class diagrams and object relation diagrams (ORDs), respectively. In addition, we have written a class firewall tool in Java. The tool accepts a GXL instance of the ORD schema, and writes the computed class firewalls to a GXL instance of the ClassFirewall schema.