ASPNL logo (1 kb)
zaterdag 17 mei 2008




Microsoft MVP

.NET Codewise Community
<< vorige | overzicht | volgende >>

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!

<< vorige | ^ naar boven | overzicht | volgende >>
copyright 2000-2007 ASPNL