null Veni voor onderzoek naar het ontrafelen van de code van computervirussen

OW_LearningAnalytics_15580_head_large.jpg

Veni voor onderzoek naar het ontrafelen van de code van computervirussen

Virusmakers zijn meestal niet zo vriendelijk dat ze de broncode van hun virus beschikbaar stellen. Je hebt wel de machinecode, maar die is voor een mens nauwelijks te 'lezen'. Tobias Kappé (faculteit Bètawetenschappen) is theoretisch informaticus en gaat met behulp van flowcharts ('automaten') op zoek naar manieren om machinecode te vertalen, zodat ze beter te analyseren en begrijpen zijn. Hij heeft daarvoor een Veni-beurs toegekend gekregen.

Van broncode naar machinecode

Als een mens een computerprogramma schrijft, doet hij dat niet rechtstreeks in machinecode maar in een programmeertaal. Met de programmeertaal maak je de broncode. Die code is voor ict-specialisten nog te lezen en te begrijpen. Een computerprogramma, een 'compiler', zet die broncode om in machinecode, een taal die de machine begrijpt maar waar mensen niet veel meer mee kunnen.

Van machinecode naar broncode

Je zou zeggen: als je het de ene kant op kunt vertalen, dan moet het toch ook de andere kant op kunnen? Kappé: 'Dat valt in de praktijk erg tegen. Er zijn inderdaad decompilers, maar die produceren soms code die voor mensen nog steeds moeilijk te lezen is. Dat kan allerlei redenen hebben. Bijvoorbeeld omdat de broncode in een andere taal stond dan de taal die de decompiler gebruikt. Dat kan zelfs een taal zijn die we nu niet meer gebruiken. Het kan ook zijn dat de compiler een aantal optimalisaties heeft toegepast om de machinecode beter te laten werken. Maar daardoor raakt een decompiler bij terugvertalen naar de broncode in de problemen. En het is ook mogelijk dat een deel van de machinecode met de hand is gemaakt waardoor de decompiler vastloopt.'

Virussen en oude programma's

OK, terugvertalen van machinecode naar broncode is lastig en decompilers kunnen maar beperkt helpen. Maar waarom zou je dat überhaupt willen? Kappé: 'Het duidelijkste voorbeeld zijn computervirussen. Van een virus heb je de machinecode, maar een broncode krijg je er natuurlijk niet bij. Om te snappen hoe het virus werkt, wil je de machinecode terugvertalen naar een broncode. Want die broncode kun je wél analyseren en dan weet je ook hoe je je kunt verdedigen tegen zo'n virus. Een ander voorbeeld zijn oude computerprogramma's. Soms is van zo'n programma de broncode in de loop der tijd verloren gegaan. Dan wil je de machinecode terugvertalen naar de beter begrijpelijke broncode, zodat je het oude programma kunt aanpassen of verbeteren.'

Code versus flowcharts

Als theoretisch informaticus benadert Kappé het probleem van de onvertaalbare machinecode op een wiskundige manier. Hij gaat de machinecode omzetten in 'automaten'. Die beschrijven de machinecode in een soort flowcharts. Vervolgens gaat hij daar vergelijkingen op los laten om patronen te identificeren. Het streven is vooral om patronen te ontdekken in de stukken machinecode waar decompilers nu nog geen raad mee weten. Het doel is die stukken code preciezer te beschrijven zodat ze beter 'vertaalbaar' worden naar broncode.

Over de Veni

De Veni is een persoonsgebonden wetenschappelijke beurs en maakt onderdeel uit van het NWO-Talentprogramma. De beurs richt zich op onderzoekers die recent gepromoveerd zijn. Zij gaan onderzoek doen binnen de volle breedte van de wetenschap. De projecten die financiering ontvangen richten zich dan ook op de meest uiteenlopende onderwerpen. In deze ronde werden 1308 Veni's aangevraagd. 174 daarvan werden gehonoreerd, waaronder het voorstel van Kappé. Omdat hij per 1 september 2024 in dienst treedt bij de Universiteit Leiden, zal hij het onderzoek uiteindelijk daar uitvoeren.

Eerdere Veni

Eerder kreeg Sung-Shik Jongmans (faculteit Bètawetenschappen) een Veni toegewezen om onderzoek te doen naar parallelle software.