Hier finden Sie wissenschaftliche Publikationen aus den Fraunhofer-Instituten.

Program analysis for the MS .NET framework

Programmanalyse für das MS .NET Framework
: Kußmaul, Tobias
: Bodden, Eric; Arzt, Steven

Darmstadt, 2016, 66 S.
Darmstadt, TU, Master Thesis, 2016
Master Thesis
Fraunhofer SIT ()

The size of software constantly increases and the amount of new software released every day is too large to verify it manually. Since smart phone apps have access to private data, software verification is needed to reduce vulnerabilities and detect malicious products. Static code analysis inspects a program without executing it and is therefore a solution to these problems. Many static code analysis tools are based on Soot [VR+00], which is a static analysis framework for Java. Soot transforms the Java bytecode or source code into Jimple [VRH98], a three-address intermediate representation, and supports Dalvik bytecode, which is the bytecode Android apps are compiled to. In this work we introduce an extension to Soot which allows with some limitations the transformation of Common Intermediate Language (CIL) code, the bytecode of the Microsoft .NET platform, to unmodified Jimple code. Using this extension Windows Phone apps as well as other .NET applications can be analyzed by Soot, or any tools based on Soot. As .NET is newer than Java, it supports more features. For example, the .NET bytecode CIL uses generics while in Java all generics have to be removed during compilation. We had to deal with this and other problems while creating the extension to Soot always considering not to modify Jimple. This allows easy integration into Soot and every other tool which is based on Soot. As some features are not representable in Jimple, e.g., unmanaged pointers, or delegates, the extension fails to analyze programs containing them. However, we showed for some of them how an implementation could look like. These ideas have to be realized in the future. In the case of transforming bytecode to Jimple our extension is slower than Soot. Since we did not focus on performance during development we expect that the performance can be optimized.