Detailansicht

A modular approach to compile-time obfuscation using sequential transform passes
Elizaveta Zaidenvarg
Art der Arbeit
Masterarbeit
Universität
Universität Wien
Fakultät
Fakultät für Informatik
Studiumsbezeichnung bzw. Universitätlehrgang (ULG)
Masterstudium Informatik
Betreuer*in
Edgar Weippl
Volltext in Browser öffnen
Alle Rechte vorbehalten / All rights reserved
DOI
10.25365/thesis.78837
URN
urn:nbn:at:at-ubw:1-16608.32255.784871-6
Link zu u:search
(Print-Exemplar eventuell in Bibliothek verfügbar)

Abstracts

Abstract
(Deutsch)
Softwareprodukte, die in binärer Form verteilt und auf nicht vertrauenswürdigen Hosts ausgeführt werden, können sensible Informationen enthalten, die nicht an Dritte weitergegeben werden sollten. Dazu zählen proprietäre Algorithmen, kryptographische Schlüssel, Zugangsdaten, Abhängigkeiten, sowie die Programmarchitektur selbst. Angreifer können diverse Reverse Engineering-Techniken nutzen, um Daten offenzulegen und Sicherheitslücken zu identifizieren, was zu Diebstahl geistigen Eigentums oder missbräuchlicher Nutzung der Software führen kann. Der Begriff Code-Obfuscation beschreibe Methoden, die darauf abzielen, das Verhalten von Programmen zu verschleiern und die statische Analyse von Binärdateien zu erschweren. Während der Code-Kompilierung und -Optimierung transformieren Obfuscation-Techniken den Code ohne dabei seine Semantik zu verändern, indem sie unter anderem den Kontroll- und Datenfluss verändern, Variablennamen umbenennen und irrelevante Codefragmente einfügen. Derzeit existiert kein gut etabliertes, frei verfügbares Obfuscationtool für Programme, die in traditionellen Programmiersprachen wie C, C++ oder Java geschrieben sind. In dieser Arbeit werden mehrere traditionelle statische Obfuscation-Techniken als modulare LLVM-Transformation-Passes implementiert. Dazu gehören Control Flow Flattening, erweitert durch einen unabhängigen Mechanismus für Bogus Control Flow, Function Merging sowie Instruction Substitution auf Basis benutzerdefinierter Mixed Boolean-Arithmetic (MBA)-Ausdrücke. Die Passes nutzen ein annotierungsbasiertes System, das selektive Obfuscation ermöglicht, indem nur explizit im Quellcode markierte Funktionen betroffen sind. Die implementierten Obfuscation-Techniken werden hinsichtlich ihrer Semantikerhaltung validiert und durch Messung der Ausführungszeit sowie Erhebung von Softwaremetriken über eine Benchmark-Suite von 47 Programmen bewertet. Die Resultate der Evaluierung in dieser Arbeit zeigen, dass bestimmte Obfuscation-Techniken die Komplexitätskennzahlen der Software verdoppeln können, während sich die Ausführungszeit der geschützten Binärdateien nicht signifikant erhöht.
Abstract
(Englisch)
Software products distributed in binary form and deployed on untrusted hosts may contain sensitive information that should not be revealed to third parties. The confidential data includes proprietary algorithms, encryption keys, credentials, dependencies, and the code architecture itself. Third parties can employ reverse engineering practices to uncover valuable data and discover security flaws, leading to intellectual property theft or exploitation. Code obfuscation is a software security approach which aims to obscure programs behaviour and complicate the static analysis of a binary. During code compilation and optimisation, obfuscations transform the code while preserving semantics by applying various techniques, such as modifying control and data flow, renaming variables, and inserting pieces of irrelevant code. Currently, there does not exist a well-established freely available obfuscation tool for programs written in traditional languages such as C, C++, and Java. In this thesis, several traditional static obfuscation techniques are implemented as modular LLVM transformation passes. These include Control Flow Flattening, extended with an independent Bogus Control Flow mechanism, Function Merging, and Instruction Substitution based on custom Mixed Boolean-Arithmetic (MBA) expressions. The passes leverage an annotation-based mechanism that enables selective obfuscation by targeting only functions explicitly marked in the source code. The implemented obfuscation techniques are validated for preserving semantics and evaluated by measuring execution time and collecting software metrics across a benchmark suite of 47 programs. Profiling results reveal that certain obfuscation techniques can double software complexity scores, while execution time remains stable for both original and obfuscated binaries.

Schlagwörter

Schlagwörter
(Deutsch)
Software Obfuscation LLVM Software Security
Schlagwörter
(Englisch)
Software Obfuscation LLVM Software Security
Autor*innen
Elizaveta Zaidenvarg
Haupttitel (Englisch)
A modular approach to compile-time obfuscation using sequential transform passes
Publikationsjahr
2025
Umfangsangabe
xvii, 80 Seiten : Illustrationen
Sprache
Englisch
Beurteiler*in
Edgar Weippl
Klassifikation
54 Informatik > 54.38 Computersicherheit
AC Nummer
AC17595226
Utheses ID
76597
Studienkennzahl
UA | 066 | 921 | |
Universität Wien, Universitätsbibliothek, 1010 Wien, Universitätsring 1