U bent hier:
  1. Home
  2. Nieuws
  3. Bekijk


Analyse

GCC viert zilveren jubileum

25 jaar geleden bracht Richard Stallman zijn vrije en opensource C-compiler uit. Sindsdien is GCC uitgegroeid tot een kracht van betekenis in de computerindustrie, waarmee vriend en vijand rekening...

Podium

Puzzelen op vijftigduizend GPS-metingen

Met de Open GPS Tracker-app kunnen bezitters van een Android-telefoon hun route opnemen en op een kaart weergeven. Ondertussen hebben meer...

Redactioneel

Het gat van Verhagen

De eerste klap is een daalder waard, weet ook Hans Clevers. In zijn eerste interview sinds bekend was gemaakt dat hij DWDD-president Robbert Dijkgraaf opvolgt bij de KNAW zei de wereldberoemde...

Tidbits

1,3 miljoen voor VU-onderzoek naar decompileren van software

12 augustus 2010

De Vrije Universiteit start met een onderzoeksproject rond het decompileren van complexe software, oftewel het vertalen van binaries naar broncode. De European Research Council stelt 1,3 miljoen euro beschikbaar voor dit Rosetta-programma. Bij het compileren wordt broncode in bijvoorbeeld C of C++ vertaald naar een lange lijst instructies voor de processor. Daarbij gaan hogere structuren zoals functies en klassen, maar ook lussen, verloren. ‘Je hebt nu wel disassemblers zoals IDA Pro, die kunnen heel veel met de processorinstructies doen en veelgebruikte functies herkennen. Maar ze kunnen bijna niks met datastructuren’, vertelt projectleider Herbert Bos van het departement voor Computerwetenschappen. ‘Terwijl dat centraal staat in het programma.’

Een applicatie kan bijvoorbeeld geheugen reserveren om persoonsgegevens volgens een bepaalde structuur op te slaan, maar in de gecompileerde code wordt dat een anonieme buffer ongestructureerde bytes. Het onderzoek moet tools opleveren waarmee engineers inzicht kunnen krijgen in de datastructuren van de binaries en een stap verder ook kan helpen om broncode te genereren. Dat levert overigens nooit de originele broncode op, maar een equivalent zonder de structuur op hoger niveau. Ook verwacht Bos niet dat het genereren van broncode volledig automatisch zal gaan.

Het decompileren van code kan om verschillende redenen interessant zijn, voornamelijk op het gebied van veiligheid. Zo is programmatuur te controleren op de aanwezigheid van trojans of achterdeuren en kunnen beveiligingsexperts controleren of de software wel doet wat het claimt. Een stap verder gaat het dichten van bugs. ‘Als je bijvoorbeeld kan zien dat er ergens een buffer van honderd bytes zit, dan kan je de binary zo herschrijven dat de aanroepen naar die buffer nooit verder gaan dan die honderd bytes en daarmee buffer overflows voorkomen’, vertelt Bos. Vooral bij legacy applicaties waar geen broncode van is kan dat voordelen opleveren.

Kern van de aanpak is dynamische analyse van de code tijdens het draaien van de programmatuur. Van elke byte in het geheugen willen de onderzoekers zo veel mogelijk verschillende informatie vastleggen en zo de functie deduceren. ‘Stel je hebt een postbode die in een flatgebouw te weten wil komen wie er waar woont’, trekt Bos de vergelijking. ‘Dan kan hij kijken wat voor soort post er voor elke woning binnenkomt. Krijgt dat adres de Eppo of de Donald Duck, dan gaat het waarschijnlijk om een gezin met kinderen. En als verschillende woningen dezelfde ansichtkaart krijgen, dan is het waarschijnlijk familie van elkaar.’

Deze aanpak heeft al de eerste bescheiden resultaten opgeleverd met de analyse van datastructuren. De onderzoekers gebruiken hiervoor opensource programma’s zoals GZip en de Lighthttpd-webserver, zodat de resultaten te vergelijken zijn met de originele broncode. Dankzij de Europese subsidie kunnen er nu extra researchers aangetrokken worden. Het projectplan gaat uit van drie promovendi en twee postdocs. In totaal loopt het project vijf jaar.

De onderzoekers denken uiteindelijke vrij complexe programma’s te kunnen analyseren. Het persbericht van de VU rept zelfs over het decompileren van Windows, maar daar neemt Bos direct afstand van. ‘Je zou er wel aan kunnen denken om sommige delen van het OS te reverse engineeren’, voegt hij eraan toe. ‘We willen wel echt een grote stap vooruit zetten. De huidige decompilers kunnen hello world-achtige programma’s decompileren, maar als het ingewikkelder wordt, houdt het wel op.’

Het team richt zich in eerste instantie op binaries voor de X86-architectuur. Bos denkt dat dat gelijk ook een van de moeilijkste problemen is, omdat de X86-instructieset zeer complex is ten opzichte van de nieuwere Risc-processoren. Hij verwacht om die reden dat de onderzoeksresultaten vertaalbaar zijn naar andere architecturen, maar dat is in eerste instantie geen onderdeel van het project.

Wel willen de onderzoekers kijken naar hoe compileroptimalisaties de resultaten beďnvloeden. Compilers zetten allerlei trucs in om efficiëntere machinecode uit te spugen. De machinecode is daardoor geen exacte vertaling van de broncode, maar doet wel hetzelfde. Dat maakt het decompileren lastiger. Ook willen de VU-researchers kijken of de codeobfuscatietechnieken van bedrijven als Irdeto stand houden. Dit soort programma’s husselen binaire data door elkaar om het moeilijker te maken deze te analyseren.

Pieter Edelman

Terug naar overzicht



© Bits & Chips | Deze pagina op internet: http://www.bits-chips.nl/nieuws/bekijk/artikel/13-miljoen-voor-vu-onderzoek-naar-decompileren-van-software.html