Obfuscation Nedir? Derin Anlatım

ilyn

Üye
24 Ocak 2019
136
1
Obfuscation nedir?
Obfuscation bir kodu bir sınıfı hatta bir projeyi "decompiler"lardan saklamak için kullanılan bir tekniktir. Şöyle düşünün, bir eşya yada herhangi bir şey, birisinden saklamak için battaniyenin altına koyarsınız. İşte bu battaniye sanal ortamda obfuscation olarak adlandırılır.

Nasıl çalışır?
Bir yapboz düşünün, parçalanmamış halde. Ve o yapbozu bir kutuda hayal edin. İşte o sizin temiz projeniz. Tüm parçalar yerinde her şey bir düzen içinde. Yapbozdan sıkıldınız ve onu dağıttınız ve kutuya dağınık halde koydunuz. İşte o obfuscationlu halidir. Yapboz parçalarını bir sınıf(class) olarak hayal edin. Kutu sizin namespace'iniz olsun. Kutuyu rafa kaldırdınız. Bir süre sonra tekrardan canınız sıkıldı ve yapboz yapmak istiyosunuz. Gördünüz ki yapboz dağınık. Yapbozu tekrardan düzenli bir hale getirdiniz. Buna da "deobfuscation" denilir.

Şimdi bundan yola çıkarak, bir windows projeniz var ve bunun içine bir şifre koydunuz. Ve onu herhangi bir araç yardımıyla obfuscate' yaptınız. Her şey tamam. Kodunuz karışık ve neredeyse anlaşılamaz. Peki bilgisayar bunu nasıl yapıyor? Yapboz örneğinden yola çıkarak her parçayı bir class olarak varsayalım. Obfuscator 1 classı bilgisayarın kaldırabileceği maksimum sayıya bölebilir. Resimli olarak şu şekilde:

ctor/cctor class constructor demektir. Adı üstünde parçaya ayrılmış sınıfları tekrardan düzeltir. İşte düğümün çözüldüğü nokta. Bu classın nasıl işlediğini çözerseniz bu düğümüde çözersiniz. de4dot gibi araçlar tam da bunu kullanır.


Seviyeleri nelerdir?
1.Seviye: Kolay
Bu seviyedeki gizlenmiş bir kodu çözmek neredeyse çocuk oyuncağıdır. Bu tür obfuscatorlar classları sadece ayırmakla yetinirler. Tıpkı bu resimdeki gibi:



2.Seviye: Orta
Bu seviyedeki gizlenmiş kodu ancak bir araç yardımıyla çözebilirsiniz.
Örneğin x adında bir int değişkeni tanımladınız, bunun gizli halı artık <rastgele karakterler> değişkeni olur. Kısacası tanımladığınız bütün değişkenlerin stringlerin vb. şeylerin adı artık rastgele karakterlerden oluşur. Buna da "Junk" adı verilir.
Bu seviyeye örnek olarak şu resim gösterilebilir:



Ve burada işin içine yeni birşey dahil oluyor. (Resimde pembe ile gösterdiğim)Trash classlar Türkçe olarak "Çöp sınıf" olarak adlandırabiliriz. Peki nedir bu çöp sınıf? ctor/cctor bu sınıfı yok sayar. Bu sınıfların içinde rastgele kodlar yazılıdır.

3.Seviye: Zor
Bu seviyede neredeyse çözülmesi imkansız dır. Classların içinde class olur. Parçalı classlar birbirleri ile kendi aralarında parçalanıp referans yaparlar. Karakterler artık uni-code olur (Çin, Hint, vb. alfabeler ile). Sınıflar o kadar çok olur ki de4dot gibi araçlar artık düğümü bile çözemez hale gelir.


Şunu unutmayın, hiçbir şey imkansız değildir. Sadece zaman alır.

Size birşey öğretebildi isem ne mutlu bana.

Tüm konu ve resimler tarafımca yapılmıştır.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.