Virusmakers stellen de broncode van hun virus niet beschikbaar. 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.’
Lees hoe Kappé het probleem te lijf gaat op de site van de Open Universiteit.