FUDRain
Kurucu
- Katılım
- 18 Temmuz 2024
- Mesajlar
- 49
- Tepkime puanı
- 11
- Puan
- 166
Obfuscar Nedir ve Neden Kullanılır?
Obfuscar, .NET tabanlı projelerinizin derlenmiş (DLL veya EXE) çıktılarını tersine mühendislik girişimlerine (decompile) karşı korumak amacıyla kullanılan açık kaynak bir kod karmaşıklaştırma (obfuscation) aracıdır.- Sınıf ve metot adlarını karmaşıklaştırır: Örneğin, MyClass yerine A_1 gibi anlamsız isimlere dönüştürür.
- String şifrelemesi yapar: Kaynak kod içinde metin olarak tutulan hassas verileri şifreler. Tersine mühendislik çabalarını zorlaştırır.
Not: Obfuscar ya da başka obfuscation araçları tam koruma sağlamaz, ancak kodun kolayca çözümlenmesini (decompile) ve kopyalanmasını oldukça zorlaştırır.
Kurulum Adımları
- GitHub: Obfuscar GitHub sayfası'ndan en son sürümü edinebilirsiniz.
- NuGet: Projenize NuGet aracılığıyla da ekleyebilirsiniz (paket adı Obfuscar).
NuGet üzerinden kurulum gerçekleştirdikten sonra projemizin ayarlarından Derleme Olayları > Derleme sonrası olay komut satırı (Build Events > Post-Build Event Command Line) girerek, aşağıdaki kod bloğu eklenmelidir.
Kod:
"$(Obfuscar)" obfuscar.xml
Ek olarak obfuscar.xml dosyasının özelliklerine girerek Çıkış Dizine Kopyala seçeneği Her zaman kopyala olarak ayarlanmalıdır.
obfuscar.xml dosyası için örnek bir konfigürasyon paylaşımı yapıyorum.
XML:
<?xml version='1.0'?>
<Obfuscator>
<Var name="InPath" value="." />
<Var name="OutPath" value=".\Obfuscator_Output" />
<Var name="HideStrings" value="true" />
<Var name="ReuseNames" value="true" />
<Var name="KeepPublicApi" value="false" />
<Var name="HidePrivateApi" value="true" />
<Var name="RenameProperties" value="false" />
<Var name="RenameEvents" value="true" />
<Var name="RenameFields" value="true" />
<Var name="UseUnicodeNames" value="false" />
<Var name="UseKoreanNames" value="true" />
<Var name="SuppressIldasm" value="true" />
<Var name="OptimizeMethods" value="true" />
<Var name="RegenerateDebugInfo" value="false" />
<Var name="MarkedOnly" value="false" />
<Module file="$(InPath)\ConsoleApp1.exe" />
</Obfuscator>
Şimdi ise Release modda derlemiş olduğum uygulamamın çıktısını inceliyorum. Kodu derleme yaptığınız zaman Debug veya Release de, şifrelenmiş uygulamamız Obfuscator_Output klasörünün içinde olacaktır.
Görüldüğü üzere şifreleme yapıldı ve kod okunamaz duruma geldi.
Obfuscar, .NET uygulamalarınızın kodunu tersine mühendislik girişimlerine karşı daha güvenli hale getirmek için pratik bir çözümdür. %100 çözüm olmasa da, kodu anlamayı ve kopyalamayı oldukça zorlaştırır.
Ek Öneri: Yalnızca obfuscation tekniğine bel bağlamayın. Yazılım lisanslama, server-side doğrulama, API anahtarları gibi ek güvenlik katmanlarını da mutlaka göz önünde bulundurun.