Bachelor's Thesis

Analysis, Methodology and Experimental Evaluation of IL Code Obfuscation Techniques in .NET Applications

Final Thesis 956.2 kB

Author of thesis: Martin Hrneček

Acad. year: 2025/2026

Supervisor: Ing. Jan Pluskal, Ph.D.

Reviewer: doc. Dr. Ing. Dušan Kolář

Abstract:

This bachelor's thesis focuses on IL code obfuscation in .NET applications from the perspective of protection against reverse engineering. The introductory part summarizes the principles of the .NET runtime, the structure of IL code, and the role of metadata in the decompilation of managed applications. Based on this theoretical background, a methodology for systematic evaluation of obfuscation effectiveness is proposed, enabling objective comparison of different techniques and tools. The methodology is based on defined metrics, including the readability and reconstructability of decompiled code, the success rate of identifier reconstruction by automatic decompilation, performance impact on the application, and changes in the resulting assembly size. The proposed approach is applied to a set of representative .NET test applications using selected obfuscation techniques. The measured results are analyzed and compared in order to identify practical benefits and limitations of individual approaches. The outcome of the thesis is a systematic assessment of IL code obfuscation effectiveness and recommendations for its use in specific deployment scenarios.

Keywords:

obfuscation, .NET, IL code, CIL, reverse engineering, decompilation, software protection, ILSpy, Halstead metrics, cyclomatic complexity

Date of defence

18.06.2026

Result of the defence

Defended (thesis was successfully defended)

znamkaCznamka

Grading

C

Process of defence

Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl na otázky přítomných. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studenta na položené otázky rozhodla práci hodnotit stupněm C.

Topics for thesis defence

  1. Na základě čeho jste volil použité metriky? Jakými zdroji jste se inspiroval?

Language of thesis

Czech

Faculty

Department

Study programme

Information Technology (BIT)

Composition of Committee

doc. Ing. Petr Matoušek, Ph.D., M.A. (předseda)
doc. Ing. Michal Bidlo, Ph.D. (místopředseda)
Ing. Radek Kočí, Ph.D. (člen)
Ing. Jan Pluskal, Ph.D. (člen)
Ing. František Grézl, Ph.D. (člen)

Supervisor’s report
Ing. Jan Pluskal, Ph.D.

Student samostatně navrhl a realizoval netriviální experimentální studii porovnávající tři obfuskátory (Obfuscar, Eazfuscator.NET, .NET Reactor) na pěti testovacích .NET aplikacích. Za přínos považuji navrženou sadu měřitelných metrik (Halstead, cyklomatická složitost, Shannonova entropie, vlastní skóre deobfuskace) doplněnou automatizovanou pipeline. Práce identifikuje fingerprinty obfuskátorů a kvantifikuje dopad obfuskace na výkon pomocí BenchmarkDotNet. Omezení metodiky (demoverze, vliv reflexe) si student zdokumentoval. Slabší stránkou byla nárazová komunikace v průběhu roku. Navrhuji práci hodnotit stupněm C jako dobrou.

Evaluation criteria Verbal classification
Informace k zadání

Téma bylo vypsáno na popud studenta, který se zajímal o ochranu .NET aplikací v návaznosti na předmět ICS. Původní studentův návrh počítal s vlastní implementací obfuskátoru. Vzhledem k náročnosti tématu jsem doporučil zúžit zadání na rešerši, návrh hodnoticí metodiky a experimentální srovnání existujících nástrojů, což bylo nakonec do zadání zapracováno. Cílem práce bylo nastudovat principy .NET runtime a IL kódu, provést rešerši technik obfuskace, navrhnout systematickou metodiku hodnocení s měřitelnými metrikami a experimentálně srovnat vybrané obfuskátory na sadě testovacích aplikací. Téma vyžaduje porozumění CIL na úrovni specifikace ECMA-335, principů reverzní analýzy a metrik softwarové vědy. Po implementační stránce je zadání jednodušší díky využití existujících obfuskátorů, po analytické a metodologické stránce považuji zadání za průměrně obtížné. S dosaženými výsledky jsem spokojen, zadání bylo splněno v plném rozsahu.

Práce s literaturou

Student samostatně nalezl 28 zdrojů zahrnujících jak klíčové publikace v oboru (Collberg a Thomborson 1997 pro taxonomii obfuskačních technik, Schrittwieser et al. 2016 pro state-of-the-art, Halstead 1977, McCabe 1976), tak aktuální technickou dokumentaci platformy .NET a primární standardy (ECMA-335, ISO/IEC 23271). Citační etika a citační norma jsou v práci dodrženy, drobnou výhradu mám k větší převaze online zdrojů z dokumentace Microsoftu, která je však u tématu .NET přirozená.

Aktivita během řešení, konzultace, komunikace

Konzultace probíhaly převážně formou emailových updatů, osobní konzultace jsme v průběhu řešení absolvovali pouze dvě. Student na ně byl přiměřeně připraven a diskuze byly konstruktivní, postup však neodpovídal dohodnutému časovému plánu práce. Tempo komunikace bylo nárazové a nepravidelné, uvítal bych častější iteraci a průběžnou zpětnou vazbu v menších krocích.

Aktivita při dokončování

Finální podoba práce byla dokončována intenzivně v posledních týdnech před odevzdáním. Připomínky k draftu jsem studentovi předal pouze formou komentářů v textu, finální verze již nebyla osobně konzultována a ne všechny náměty na úpravy byly zapracovány. Přes tyto výhrady student stihl text dovést do funkčně i obsahově ucelené podoby.

Publikační činnost, ocenění

Není. Zdrojové kódy testovacích aplikací, automatizované pipeline a analytických nástrojů jsou dostupné v GitHub repozitáři pod licencí MIT.

Points proposed by supervisor: 75

Grade proposed by supervisor: C

Reviewer’s report
doc. Dr. Ing. Dušan Kolář

Práce s pěkným potenciálem, která však kulhá v samotné podstatě - slabá metodika a implementace. Ani prezentace výsledků není vhodná. Práci však doporučuji k obhajobě.

Evaluation criteria Verbal classification Points
Náročnost zadání

Evaluation level: méně obtížné zadání

Zadání vyžaduje především se zorientovat v tématu a nadále zužitkovat informace  pro ověření chování vybraných "obfuskátorů".

Prezentační úroveň technické zprávy

Kapitoly prezentují často kód, nebo zabíhají do detailů, které jsou v kontextu práce nepochopitelné. I když je na začátku seznam zkratek, tak způsob jejich řazení mi zůstal utajen. Krom toho např. zkratka CLI je použita ve dvou významech (.NET a příkazová řádka). Chybí také číslování vzorců apod. Cíl práce a její směrování je však z práce pochopitelný.

65
Formální úprava technické zprávy

Formálně je práce v pořádku. Až na ty kusy kódu zmiňované výše.

90
Realizační výstup

Vlastního kódu je poměrně málo, způsob měření v nanosekundách považuji za velice nevhodný a nicneříkající. Jelikož i metodika je slabá, tak tuto stránku spolu s tím, jak jsou výsledky srovnání prezentovány, považuji za nejslabší stránku práce.

50
Využitelnost výsledků

Podle mě žádné možnosti využití nejsou, chtělo by to pořádně předělat a rozpracovat.

Rozsah splnění požadavků zadání

Evaluation level: zadání splněno s drobnými výhradami

To, co autor považuje za metodiku je velmi strohé, ale formálně je to splněno.

Rozsah technické zprávy

Evaluation level: je v obvyklém rozmezí

Nicméně obsahuje řadu pasáží, které působí jak výplně, např. úvod 2. a 4. kapitoly shrnuje její obsah. Na druhou stranu i po odstranění takových pasáží by práce zůstala v normě.

Práce s literaturou

Vhodná volba zdrojů.

95
Points proposed by reviewer: 60

Grade proposed by reviewer: D

Responsibility: Mgr. et Mgr. Hana Odstrčilová