One of the challenges of reverse engineering is the extraction of a specification from source code. Our work proposes a singular approach to the construction of reverse engineering tools. Using a transformation based software machine we have built two languages designed to help the construction of reverse engineering tools. Each one of these languages embodies an important domain in reverse engineering. This approach is based on the idea that reuse in a high level action is possible, if a domain is written for a class of problems. This is the premise of the Draco paradigm, a reuse based strategy for software construction. We also demostrate the use of these languages, by writing a reverse engineering tool that was able to derive a specification from a system built by others and of which we had no previous knowledge. This paper explains how we have built the languages and how they were reused for building a reverse engineering tool.