Wat is nu eigenlijk broncode? Als hackers nagenoeg alles kunnen kraken, waarom is dat dan bij broncode nog niet gelukt, en waarom is dat zo moeilijk? Op uw computer staan verschillende programma's, zoals bijvoorbeeld MS Word of Internet Explorer. Elk programma bestaat uit een serie instructies (vaak miljoenen) die door uw computer uitgevoerd kunnen worden. Een programma wordt geschreven door mensen die speciaal hiervoor ontwikkelde talen gebruiken, zoals bijvoorbeeld Cobol, C of Java. De broncode van een programma is de representatie van dat programma in een hogere programmeertaal. De broncode kan automatisch omgezet worden in machine-instructies met behulp van een compiler die vertaalt van bron- naar doeltaal. Om een programma uit te voeren zijn alleen de machine-instructies nodig, niet de broncode zelf. Om die reden staat de broncode van bijvoorbeeld Internet Explorer niet op uw computer. Maar om een programma aan te passen is de broncode onmisbaar. Daarom zijn veel bedrijven bijzonder zuinig op hun broncodes. Met behulp van de broncode kunnen zij hun systemen aanpassen aan nieuwe gebruikerswensen, nieuwe technische mogelijkheden, nieuwe regelgeving, en kunnen zij nieuwe releases produceren. Ook zijn bedrijven bang dat het openbaar maken van broncode bedrijfsgeheimen zou kunnen onthullen, zoals bijvoorbeeld beveiligingsmechanismen. Is het dan mogelijk om broncode te kraken? In sommige gevallen is dat nergens voor nodig: voor de zogenaamde "open source" systemen is de broncode vrij beschikbaar op het Internet. Veel bedrijven zijn echter zuinig op hun broncode, en waken er zorgvuldig voor dat hun broncode niet buiten het bedrijfsnetwerk beschikbaar komt. Vanuit het perspectief van een hacker is er dan geen verschil met andere bedrijfsgeheimen: de moeilijke stap is toegang krijgen tot het bedrijfsnetwerk. Een andere mogelijkheid is het afleiden van broncode uit de machine instructies. Dit is een soort terugvertaling, en wordt decompilatie of reverse engineering genoemd. Decompilatie is moeilijk omdat in het normale vertaalproces veel elementen (zoals naamgeving, code-indeling) verloren gaan die voor het begrijpen van code essentieel zijn. Decompilatie kan illegaal zijn wanneer het gebeurt met als doel beveiligingscodes van programma's te omzeilen. Maar decompilatie kan ook noodzakelijk zijn, bijvoorbeeld om computer virussen te bestrijden (waarvan vaak geen broncode voorhanden is). En in sommige gevallen raken bedrijven hun broncode kwijt (door slordig beheer, slechte backups, of andere redenen) -- maar moet hun programma wel aangepast worden. In zo'n geval is decompilatie een laatste redmiddel. Naar broncode en reverse engineering wordt volop onderzoek gedaan in het Delftse software evolution research lab. In november 2004 organiseert dit lab de International Working Conference on Reverse Engineering (WCRE). Arie van Deursen is hoogleraar software engineering aan de Technishe Universiteit Delft, en senior onderzoeker bij het Centrum voor Wiskunde en Informatica te Amsterdam.