Onthoud dat C# naar CIL wordt gecompiled en dit kan makkelijk worden gedecompiled worden. Dus stop NOOIT maar dan ook NOOIT wachtwoorden of secrets in je C# broncode.
Kun je CIL dan compilen naar iets anders?
Om dat te begrijpen zal ik je wat vertellen over twee verschillen.
1. yourapp.exe --> compiled --> CIL / MSIL --> Werkt op elke PC.
2. notepad.exe --> Native Code --> Code dat geoptimaliseerd is alleen voor DIE specifieke PC waar jij het voor het eerst op hebt gedraait -> Zal niet werken op een andere PC wanneer je het zou kopieren
Wat gebeurt er als je notepad.exe uitvoert?
De native code zal meteen worden uitgevoerd.
Wat gebeurt er als je yourapp.exe uitvoert?
Hij wordt niet meteen uitgevoerd maar wordt nog een keer gecompiled. Het zogehete JIT (Just In Time). Deze JIT zorgt ervoor dat de CIL code gecompiled wordt naar Native code, daarmee bedoel ik code die de computer kan begrijpen.
Kun je dan je .exe compilen naar native code?
Ja dat kan, maar dan draait het alleen op het specifieke systeem waar jij het opdraait. Oftewel wanneer jij deze native code applicatie kopieert naar een andere PC dan denkt die PC van "Dafuq!?". De JIT zorgt ervoor dat de applicatie wordt geoptimaliseerd voor jouw PC.
Is het nuttig om mijn CIL naar Native te compilen?
Nee, alleen bij applicaties die enorm zijn (neem Office van Microsoft).
Waarmee zou ik kunnen decompilen?
ILSpy is één van de velen op het internet.
Ik ben toch geïnteresseerd om te compilen naar Native code, waarmee doe ik dat?
ngen.exe (standaard op de PC, zo aan te roepen vanuit command prompt), voor meer informatie hierover zou ik even gebruik maken van google
Conclusie?
Nooit secrets of wachtwoorden in je C# te gebruiken.