Selamlar THT bugün Obfuscation bahseticem.
Obfuscation, bir programın çalışmasını değiştirmeden,
kodun insanlar tarafından anlaşılmasını zorlaştırma işlemidir.
Amaç:
Tersine mühendisliği zorlaştırmak
Kaynak kodu korumak
Fikri mülkiyeti saklamak
Hem normal şirketler hem de kötü amaçlı yazılımlar kullanabilir. Yani teknik kötü değil, kullanım amacı belirleyici.
BASİT ÖRNEK
Normal kod :
password = input("Şifre gir:")
if password == "1234":
print("Giriş başarılı")
Obfuscation sonrası mantık aynı ama okunması zor olabilir:
a = input("Şifre gir:")
if a == "".join([chr(49),chr(50),chr(51),chr(52)]):
print("Giriş başarılı")
Çalışma aynı, ama anlaması zorlaştı.
Obfuscation Türleri
1 : İsim Değiştirme (Renaming)
int toplamSayi = 10;

int a = 10;
Anlamlı değişken isimleri anlamsız yapılır.
Android’de bu çok yaygındır (örneğin ProGuard / R8 kullanılır).
2 : String Şifreleme
Program içindeki metinler şifrelenir.
Normal:
char* url = "Example Domain";
Obfuscated:
URL base64, XOR veya özel algoritma ile saklanır
Çalışma anında çözülür
Bu, statik analiz yapan antivirüsleri zorlaştırır.
3 : Control Flow Obfuscation (Akış Karıştırma)
Kodun mantık akışı karıştırılır.
Normal:
if → else → return
Obfuscated:
Gereksiz döngüler
Sahte koşullar
Karmaşık switch-case yapıları
Kod çalışır ama okunması zorlaşır.
4 : Dead Code Ekleme
Gerçekte çalışmayan ama kodun içine konan sahte fonksiyonlar.
Amaç:
Analizi zorlaştırmak
Dosya boyutunu şişirmek
5 : Pack/Wrapper Kullanımı
Program:
Şifrelenmiş şekilde saklanır
Çalışırken hafızada açılır
Bu teknik özellikle zararlı yazılımlarda görülür.
🛡 Obfuscation Nerelerde Yasal Kullanılır?
Android uygulamaları (kaynak kodu çalınmasın diye)
Oyun yazılımları
Lisans kontrol sistemleri
Ticari yazılımlar
Malware Tarafında Neden Kullanılır?
Zararlı yazılımlar:
Antivirüs imza tespitinden kaçmak
Tersine mühendisliği zorlaştırmak
Zararlı kodu gizlemek.
Ama modern antivirüsler sadece kodu değil, davranışı (behavior analysis) da izler.
Obfuscation =
Kodun çalışmasını değiştirmeden, okunmasını zorlaştırmak.
Son olarak
Dil fark etmez:
C
Java
Python
Kotlin
hepsinde yapılabilir.
Bir sonraki yeni konuda görüşürüz.
Obfuscation, bir programın çalışmasını değiştirmeden,
kodun insanlar tarafından anlaşılmasını zorlaştırma işlemidir.
Amaç:
Tersine mühendisliği zorlaştırmak
Kaynak kodu korumak
Fikri mülkiyeti saklamak
BASİT ÖRNEK
Normal kod :
password = input("Şifre gir:")
if password == "1234":
print("Giriş başarılı")
Obfuscation sonrası mantık aynı ama okunması zor olabilir:
a = input("Şifre gir:")
if a == "".join([chr(49),chr(50),chr(51),chr(52)]):
print("Giriş başarılı")
Çalışma aynı, ama anlaması zorlaştı.
1 : İsim Değiştirme (Renaming)
int toplamSayi = 10;
int a = 10;
Anlamlı değişken isimleri anlamsız yapılır.
Android’de bu çok yaygındır (örneğin ProGuard / R8 kullanılır).
2 : String Şifreleme
Program içindeki metinler şifrelenir.
Normal:
char* url = "Example Domain";
Obfuscated:
URL base64, XOR veya özel algoritma ile saklanır
Çalışma anında çözülür
Bu, statik analiz yapan antivirüsleri zorlaştırır.
3 : Control Flow Obfuscation (Akış Karıştırma)
Kodun mantık akışı karıştırılır.
Normal:
if → else → return
Obfuscated:
Gereksiz döngüler
Sahte koşullar
Karmaşık switch-case yapıları
Kod çalışır ama okunması zorlaşır.
4 : Dead Code Ekleme
Gerçekte çalışmayan ama kodun içine konan sahte fonksiyonlar.
Amaç:
Analizi zorlaştırmak
Dosya boyutunu şişirmek
5 : Pack/Wrapper Kullanımı
Program:
Şifrelenmiş şekilde saklanır
Çalışırken hafızada açılır
Bu teknik özellikle zararlı yazılımlarda görülür.
🛡 Obfuscation Nerelerde Yasal Kullanılır?
Zararlı yazılımlar:
Antivirüs imza tespitinden kaçmak
Tersine mühendisliği zorlaştırmak
Zararlı kodu gizlemek.
Ama modern antivirüsler sadece kodu değil, davranışı (behavior analysis) da izler.
Obfuscation =
Kodun çalışmasını değiştirmeden, okunmasını zorlaştırmak.
Son olarak
Dil fark etmez:
C
Java
Python
Kotlin
hepsinde yapılabilir.
Bir sonraki yeni konuda görüşürüz.



