Falke Diploma Summary

Program-Transformation.Org: The Program Transformation Wiki
Raimar Falke's Diploma Thesis is written in German. For English readers, I have translated the final section using Google's translation facility and some hand editing.

It strikes me that natural language translation is at a somewhat equivalent stage as decompilation: automatic translators exist, and you can get a sense of the original text, sometimes clearly, at other times quite muddled. Often hand editing is required to produce a clean translation. The automatic translator is useful despite its low quality, because at least initially, you have very little idea of what the input text means.

-- MikeVanEmmerik - 13 Jan 2005

5 Summary and Conclusion

In this paper a type analysis system for a decompiler was presented. Characteristics were defined, which contain all type-relevant information about the examined program. Furthermore a multitude of possibilities of the user were modelled for influencing the type analysis. The presented type system supports the complex types array, struct and sum types in addition to integers and pointers. Sum types are used to model conflicts. The presented methods for the recognition of arrays work for all compiler optimizations except two (loop unrolling and loop collapsing).

Multidimensional array types, classes, floating-point numbers, 64-Bit integers, enumerated types and bit fields were not considered in this paper. These types offer challenges for the future. A procedure which measures the quality of the extraction of type-relevant information and the type reconstruction, would also be useful. Without this, one cannot formally measure the quality of a type analysis. A graphical interface for the input of the user instructions would simplify the use of the decompiler.

With the help of clone detection, it would be possible to recognise compiler optimisations such as loop unrolling, and also improve statements relating to array parameters. As became evident, aliases limit the decompiler in many ways. This can be improved by the employment of an alias analysis component. Compilers usually include additional information for debugging in the examined program. Using these information is a also possible task. Harmful programs such as worms and viruses are partially polymorphic, i.e. they change their form (e.g. the sequence of assembler instructions) during their propagation. It would be interesting to find out to what extent these transformations are still visible after decompilation.