Campus HagenbergInformatik, Kommunikation, Medien

Studienprojekte

Projekte sind ein essenzieller Bestandteil des Curriculums von Mobile Computing. Die Studierenden bekommen die Möglichkeit, das im Zuge ihres Studiums erworbene theoretische Wissen selbst praktisch umzusetzen. Ein sowohl für StudentInnen als auch für Lehrende immer wieder spannendes Unterrichtskonzept, in dem schon erfolgreiche Startups wie z.B. runtastic und Butleroy ihre Anfänge gefunden haben.

Polymorphic Code: A Metamorphic Code Engine for ARM

Zeitraum
Oct 2017 - Feb 2018
FH Studierende
Marcel Breitenfellner
FH BetreuerIn
Dipl. Ing. Dr. techn. Erik Sonnleitner

Ziel

The goal for the whole master thesis project is to build a state of the art metamorphic code engine which supports at least the ARM architecture, but preferably has an easy to adopt open design. In this second project we implement a metamorphic code engine and use the results of last semester project to add a benchmark of compare the effectiveness of each successive generation.

Umsetzung

A metamorphic code engine is a piece of software, which mutates a given piece of code and outputs a modified version. This modified version is a logical equivalent to the original, version but consists of a different code. The less common code the generations share, the harder it’s to detect they relation (which is good).

In this program a C-program is implemented which uses different techniques like opcode substitution or branch reversion to mimic this behaviour. The program gets precompiled assembly files from GCC as input, processes them and lets GCC finish the compile job and produce a binary. Each generated binary has a different underlying code, but does actually the same job.

Last semester we implemented and tested the nGram and opcode graph similarity algorithms, which are used in this semester to measure the effectiveness of the implemented metamorphic code engine. Therefore a benchmark target is added, which applied these algorithms to the mutated version desired.