Selam bugün Obfuscation üzerine konuşacağız.
Öncelikle temel olarak Obfuscation nedir buna bakalım;
Obuscation bir yazılımın, oyunun kırılmasını önlemek için kullanılır.
Tabii sadece bununla sınırlı değil hem etik olarak hem de kötü amaçlar için kullanılabilir.
Örnek olarak C dilinde basit bir Obfuscation örneğine bakalım;
Orijinal kod;
Karmaşıklaştırılmış Kod;
Aslında bambaşka bir kod gibi duruyor fakat yaptığımızı şey sadece "a ve b değişkeninin" isimlerini değiştirmek oldu.
Bunu Japonca, Çince, Hintçe gibi dillerin alfabeleri ile daha da karmaşık hale getirebilirsiniz.
Obfuscation sadece bununla sınırlı değildir, Şimdi gelin Control Flow Obfuscation'a bir göz atalım;
Bu teknik Türkçe hali ile Kontrol Akış Karmaşıklığıdır kodun takip edilmesini zorlaştırır.
Python ile bir örnek gösterelim;
Yapılan işlemi düz yolu bir labirente dönüştürmek gibi düşünün.
Kodun akışını zorlaştıran basit bir Python örneği.
Şimdi String Şifrelemeye bakalım
Stringler metinlerdir örn;
Bu C# dilinde mesaj kutusu için kullanılan kod göstermek istenilen mesaj ise bir string.
Şimdi bu string'i bir şifreleme sistemi örn. X0R ile şifreleyip Runtime sırasında çözmeye String Encryption deniyor.
Şimdide JUNK kod nedir buna bakalım;
JUNK kod çöp koddur, hiçbir işlevi olmayan sadece kodun okunmasını zorlaştıran boş kod yapılarına JUNK yani çöp kod denir.
Şimdi Python dili için bir JUNK kod örneğine bakalım;
Basitçe JUNK kod bu işe yarar tabi projeye bundan 1 tane değil 1000 tane koyarsanız işlevli olur
Obfuscation sadece bunlarla sınırlı değildir; Compress, Source Encryption gibi daha fazla seçenekleri vardır.
Burada önemli olan bunları tek tek el ile yapmanızın çok zor olacağından dolayı.
Herkesin kullandığı Obfuscator, Packer araçlarından birkaç tane aşağı bırakıyorum.
*-.NET Reaktor-*
*-ConfuserEX-*
Bu araçlar herkes tarafından kullanılır ve güvenilir sağlan araçlardır.
Konu bu kadar sorularınız olursa aşağı yazarsınız.
Saygılarımla
Öncelikle temel olarak Obfuscation nedir buna bakalım;
Obuscation bir yazılımın, oyunun kırılmasını önlemek için kullanılır.
Tabii sadece bununla sınırlı değil hem etik olarak hem de kötü amaçlar için kullanılabilir.
Örnek olarak C dilinde basit bir Obfuscation örneğine bakalım;
Orijinal kod;
C:
int a=4,b=5;
int gecici=a;
a=b;
b=gecici;
Karmaşıklaştırılmış Kod;
C:
int GIOQHGOIHQWGHQ=4,GHJQWOGIHNQWO9GHHGW=5;
int gowgqwoghınqıoghqıowgh=GIOQHGOIHQWGHQ;
GIOQHGOIHQWGHQ=GHJQWOGIHNQWO9GHHGW;
GHJQWOGIHNQWO9GHHGW=gowgqwoghınqıoghqıowgh;
Aslında bambaşka bir kod gibi duruyor fakat yaptığımızı şey sadece "a ve b değişkeninin" isimlerini değiştirmek oldu.
Bunu Japonca, Çince, Hintçe gibi dillerin alfabeleri ile daha da karmaşık hale getirebilirsiniz.
Obfuscation sadece bununla sınırlı değildir, Şimdi gelin Control Flow Obfuscation'a bir göz atalım;
Bu teknik Türkçe hali ile Kontrol Akış Karmaşıklığıdır kodun takip edilmesini zorlaştırır.
Python ile bir örnek gösterelim;
Python:
# Control Flow Obfuscation Karmaşıklaştırılmış mantık
# Amaç kodun takip edilmesini zorlaştırmaktır.
# Saçma işlemler ile kod doldurulur ve kodun asıl amacı gizlenmiş olur
def controlflowornek(x):
if (x % 2 == 0 and x < 10) or (x % 2 == 0 and x >= 10 and True):
print("CFO Örnek" if x < 10 else "CFO Örnek")
elif (x % 2 != 0 and x < 10) or (x % 2 != 0 and x >= 10):
print("CFO Örnek" if x < 10 else "CFO Örnek")
Yapılan işlemi düz yolu bir labirente dönüştürmek gibi düşünün.
Kodun akışını zorlaştıran basit bir Python örneği.
Şimdi String Şifrelemeye bakalım
Stringler metinlerdir örn;
C#:
MessageBox.Show("String");
Bu C# dilinde mesaj kutusu için kullanılan kod göstermek istenilen mesaj ise bir string.
Şimdi bu string'i bir şifreleme sistemi örn. X0R ile şifreleyip Runtime sırasında çözmeye String Encryption deniyor.
Şimdide JUNK kod nedir buna bakalım;
JUNK kod çöp koddur, hiçbir işlevi olmayan sadece kodun okunmasını zorlaştıran boş kod yapılarına JUNK yani çöp kod denir.
Şimdi Python dili için bir JUNK kod örneğine bakalım;
Python:
def junk_kod():
junk = 0
for i in range(1000):
junk += i
# İşlevsiz çöp bir kod
# Nedeni belirlediğimiz 1000 değerindeki
# For döngüsü sürekli aynı değeri döndürür
# Bir işlevi, etkisi yoktur
return junk
def gercek_islev():
print("Gerçek işlev")
gercek_islev()
Basitçe JUNK kod bu işe yarar tabi projeye bundan 1 tane değil 1000 tane koyarsanız işlevli olur
Obfuscation sadece bunlarla sınırlı değildir; Compress, Source Encryption gibi daha fazla seçenekleri vardır.
Burada önemli olan bunları tek tek el ile yapmanızın çok zor olacağından dolayı.
Herkesin kullandığı Obfuscator, Packer araçlarından birkaç tane aşağı bırakıyorum.
*-.NET Reaktor-*
*-ConfuserEX-*
Bu araçlar herkes tarafından kullanılır ve güvenilir sağlan araçlardır.
Konu bu kadar sorularınız olursa aşağı yazarsınız.
Saygılarımla






