I am a full time Professor in the
department of Computer Science at the University of Verona,
Italy. I earned my Ph.D. degree in Computer Science from the
University of Pisa in 1993.
My research interests are abstract interpretation, static program analysis, semantics of programming languages, program verification, abstract model-checking, program transformation and optimization, digital asset protection, code obfuscation, software watermarking and lattice theory. In lattice theory, I contributed to understanding of the structure of the lattice of closure operators and complete congruence relations on complete lattices.
Links: DBLP, Google Scholar
In this course we will study systematic and automatic methods for code attack and reverse engineering. We will introduce static and dynamic program analysis as basic tools for understanding what programs do and for making reverse engineering. Most known attack methods based on control/data-flow analysis, profiling, tracing, emulation, disassembly and decompilation will be presented as suitable abstractions of an interpreter. Obfuscation and watermarking will be then discussed as methods for making these abstract interpreters incomplete when acting on the modified (obfuscated or watermaked) code, i.e. failing to extract hidden information. Systematic methods for making abstract interpreters incomplete will be discussed together with concrete examples and challenging future research directions. The result is a unifying and comprehensive view of SW protection strategies which provides both a theoretical bases for most of the known attack and defense methods and a perspective for the design of new algorithm for surreptitious software. The class will consists of lectures and hands-on exercises. Slides will be distributed to the course attendees.