01 Kasım 2005

Obfuscation Nedir?

Java Dünyası'nda kod geliştiren herkes .class uzantılı (derlenmiş java dosyaları) dosyalardan kaynak koda (.java uzantılı dosyalara) decompiler denilen araçlarla geçileceğini bilir. Bu nedenle internetten yada herhangi bir yerden elinize geçen bir java projesinin sadece class dosyaları varsa bu araçlarla rahatlıkla orjinal kaynak koda dönebilirsiniz. Tabi bazı kayıplar olabilir,fakat bu kodu anlamanıza engel olmaz. Bu nedenle class dosyaları, kodunuzun başkaları tarafından okunmasını istemiyorsanız, güvenli değildir.

İşte obfuscation dediğimiz olay bu işe bir çözüm getirmiştir. Obfuscation işlemi sizin derlediğiniz .java dosyaları ile oluşan .class dosyaları üzerinde işlem yapar ve artık .class dosyalarından kaynak koda ulaşma işlemine bir son verir. Bu işlemi nasıl mı yapar?

Temel olarak bir class dosyasını alır ve onun ismini,kullandığı metodarın,alanların isimlerini değiştirerek alfabeden isimler atar. Mesela Deneme.class, a.class'a dönüşür. Tabi bunu yaparken bu class'ı kullanan diğer class'larda da gerekli değişiklikleri yapar.Böylece kodunuz hem sorunsuz bir şekilde çalışır hem de güvenliliği sağlanmış olur. Obfuscation işlemini yapan araçlara Obfuscator denmektedir ve piyasada çeşitli obfuscator'ler bulunmaktadır. Bunlardan en beğendiklerim ProGuard (bedava) ve RetroGuard (ticari projeler için paralı)'dır.

Obfuscation işlemi ayrıca projenin büyüklük olarak da küçülmesini sağlar. Özellikle mobil projeler için bu çok güzel bir özelliktir. Çünkü çoğu mobil proje internetten,wap'tan indirilmektedir. Bu nedenle projenin mümkün olduğu kadar küçük olması aranmaktadır.Obfuscation class isimlerini,değişkenlerinin isimlerini... kısalttığı için otomatik olarak projenin boyutu da küçülmektedir.

2 yorum:

Adsız dedi ki...

merhabalar kullanımını da nalatsaydınız sevinrim ..tesekkurler

Serkan Yıldırım dedi ki...

Merhaba, obfuscation biraz konfigürasyon işi. Yani nelerin obfuscate edilip edilmeyeceğini siz ilgili obfuscator'un konfigürasyonundan belirtmeniz gerekiyor. Bu nedenle hangi obfuscator'u kullancaksanız ilgili dökümantasyonunu incelemeniz gerekiyor. İyi günler dilerim...