The Vision Column - Code kwijt? Wanhoop niet!
The Vision Column wordt verzorgd door ontwikkelaars van
The Vision Web (tegenwoordig Ordina).
Door Erwin Werkman
25 juli 2005
Pas geleden kwam ik er achter dat ik ineens een stuk bron-code kwijt was geraakt.
Kennelijk was er iets fout gegaan bij het inchecken in Source Safe, waardoor ik twee
dagen werk was kwijt geraakt. Ik had wel een gecompileerde versie van de code. Wat te
doen: opnieuw beginnen en twee dagen verliezen of is er een slimmere mogelijkheid?
Gelukkig compileren .NET compilers nooit direct naar assembly, maar naar Microsoft
Intermediate Language (MSIL of IL). De exe’s en dll’s die gegenereerd worden bevatten
dus alleen maar een vertaling van C# naar IL en laat het nou ook mogelijk (en relatief
simpel) zijn om ook weer vanuit IL naar C# te vertalen. Probleem opgelost: ik decompileer
mijn DLL weer naar C# en heb mijn verloren gewaande code weer terug. En uiteraard zijn
er een aantal ontwikkelaars die daar dan weer een handig tooltje voor gemaakt hebben.
Ik ken er twee: Anakrino (http://www.saurik.com/net/exemplar/") en Reflector (http://www.aisto.com/roeder/dotnet/).
Van deze twee is Reflector het makkelijkst in gebruik (voornamelijk omdat ik Anakrino
niet werkend kreeg).
De code die je terug krijgt heeft wel wat gebreken. Zo worden de namen van variabelen
niet in de IL opgeslagen, dus de decompiler geeft wat generieke namen terug. Maar verder
is het een prachtige manier om verloren code terug te krijgen.
En het leuke is dat je uiteraard niet alleen je eigen code kan decompileren, maar ook
het hele .NET framework op deze manier kunt bekijken. En als je nou niet wilt dat de
hele wereld jouw programmeerwerk kan bewonderen, dan zijn er weer ‘obfuscators’ om je
daar tegen te beschermen. Maar dan moet je niet zeuren als je je source code bent
kwijtgeraakt!
|