Ervaringen met obfuscation software
Naar bytecode gecompileerde talen zoals Microsoft C# en Visual Basic en Sun Java kennen het probleem dat ze erg makkelijk te reverse engineeren zijn met allerlei programma's. In de .NET SDK biedt Microsoft er zelf eentje aan, de IL Disassembler (ildasm.exe).Nu zijn er wel wat dingen over reverse engineering te zeggen. Behalve dat het niet mag maar toch zeer makkelijk kan zijn er ook softwarebedrijven die hier tools voor gemaakt hebben. Deze tools veranderen de bytecode of de CIL van je stukje software zodat:
• Functienamen veranderen, soms zelfs naar unprintable UTF-8 karakters;
• De flow van de code veranderen, waardoor het een soort moeilijk te begrijpen spaghetti wordt;
• Dependencies samenvoegen met je uitvoerbare bestanden;
• Door middel van overloading meerdere functies in één functie laten samenvallen;
• Fields in classes door middel van een soort overloading samennemen;
• Door ongeldige metadata toe te voegen decompilers en disassemblers laten crashen.
Dit alles zonder dat de werking van je software wordt aangetast, als het goed is.
Soms bieden deze programma's ook extra features:
• Pruning, het verwijderen van niet gebruikte functies en classes;
• Automatisch signing met een sleutel, waardoor veranderingen in de bytecode of CIL opgemerkt worden;
• Onopgevangen exceptions afvangen en naar een server versturen als foutrapport;
• Bericht sturen naar een server als is gedetecteerd dat er geknoeid is met de bytecode of CIL.
• Debug informatie genereren.
Met dit topic heb ik het doel om ervaringen deze obfuscation software te bediscussiëren. Wat maakt obfuscation software goed, welke obfuscation software werkt goed, en hoe integreert het met je ontwikkelomgeving?
Wat obfuscation software waar ik ervaring mee hebt of ken:
Dotfuscator
{smartassembly}
Opmerkingen over de TS?
Iets toe te voegen, te veranderen, suggesties? Direct MessageOp het moment ben ik erg tevreden over {smartassembly}. Hij compileert niet zo snel als Dotfuscator, maar heeft een stuk meer opties en in beter te integreren.
[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]