Previous slide Next slide Toggle fullscreen Open presenter view
CEN429 Güvenli Programlama · Hafta 9
Gelişmiş Kod Gizleme ve Çeşitlendirme
CEN429 Güvenli Programlama — Hafta 9
Dr. Öğr. Üyesi Uğur CORUH · 13.11.2026
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Bugünün planı (3 saat)
Saat
Bölüm
Konu
1
1–2
Gizleme neden kural? · MATE · taksonomi · kural şablonu
2
3
Kontrol akışı kuralları (K-01…K-06)
3
4–6
Veri kuralları · sanallaştırma/dinamik · çeşitlendirme · ölçme
Öğrenme çıktısı (ÖÇ.3): gizlemeyi bir güvenlik kuralı olarak yazmak · her tekniğin maliyetini/sınırını söylemek · bir korumayı ölçüp gerekçelendirmek
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Önceki haftalardan gelenler
Beyaz kutu / MATE saldırgan modeli — cihazı elinde tutan kullanıcının aynı zamanda saldırgan olduğu tehdit modeli (Hafta 1)
Hata ayıklayıcı (debugger) — programı adım adım çalıştıran, değişkenleri gösteren araç (gdb, lldb); RASP bağlamında çalışma anında algılamasını görmüştük (Hafta 6)
Entropi — bir verinin baytlarının ne kadar düzensiz göründüğünün ölçüsü; şifreli/paketli içerik tespitinde ve rastgele sayı üretiminde gördük (Hafta 2, 3)
Derleme bayrağı, strings ve sembol tablosu — derleyici seçenekleri ve bir binary dosyanın okunabilir metinlerini/isim listesini gösteren araçlar; gizlemenin giriş seviyesi adımları (Hafta 4)
Tersine derleme — bir binary/bayt kodunu geri, okunabilir koda yaklaştırma; JVM bayt kodu üzerinde gördük (Hafta 5)
XOR — iki bit farklıysa 1, aynıysa 0; a^b^b=a ile kendini geri alır; Java dize gizlemede elle çözmüştük (Hafta 5)
Günlük (log) — çalışırken yazılan bilgi mesajları; hassas bilgi düşerse saldırgan okur (Hafta 2)
Bu hafta: bu araçları ve kavramları ileri düzeyde ve ölçülebilir biçimde kullanıyoruz.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Bu haftanın kavramları
Her terim, gövdede ilk geçtiği yerde tanımlanır; burada yalnız nerede olduğunu işaretliyoruz.
Kavram
Nerede
Gizleme bir güvenlik kuralı olarak, MATE
Bölüm 1
Gizleme taksonomisi (beş aile)
Bölüm 2
"Koruma kuralı" şablonu (neyi korur/maliyet/sınır/ölçüm)
Bölüm 2
Kontrol akışı kuralları (K-01–K-06)
Bölüm 3
Veri gizleme kuralları (K-07–K-09)
Bölüm 4
Program bütünü kuralları (K-10–K-12)
Bölüm 4
Çeşitlendirme
Bölüm 5
Gizlemenin dört ölçütü (güç/dayanıklılık/gizlilik/maliyet)
Bölüm 5
Deobfuscation (karşı tarafın araçları)
Bölüm 5
Katmanlı savunmadaki yeri, proje S9
Bölüm 6
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Kaynak kod nedir?
Sizin yazdığınız, insanın okuyabildiği program metni (ör. C dosyası).
Örnek: int topla(int a, int b) { return a + b; }
Kaynak kod derlenir ve makinenin çalıştırdığı biçime döner.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Derleyici ve binary dosya
Derleyici (compiler): kaynak kodu makine koduna çeviren program (gcc, clang).
Binary dosya (binary): derleme sonucu; bilgisayarın doğrudan çalıştırdığı dosya (.exe, .so).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Makine kodu ve assembly
Makine kodu: işlemcinin anladığı sayısal komutlar.
Assembly: makine kodunun insana biraz daha okunur hali (mov, cmp, jmp).
Binary dosyayı açtığınızda gördüğünüz şey budur.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Tersine mühendislik nedir?
Tersine mühendislik (reverse engineering): binary dosyaya bakıp programın ne yaptığını anlamaya çalışmak.
Saldırganın temel işi budur.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Tersine derleyici (decompiler)
Tersine derleyici (decompiler): binary dosyayı geri, okunabilir koda yakın bir biçime çeviren araç.
Örnekler: Ghidra, IDA.
Amaç: kaynağa erişimi olmayan biri, binary'ye bakarak mantığı çıkarsın.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Bit, bayt, onaltılık
Bit: 0 veya 1.
Bayt: 8 bit.
Onaltılık (hex): 0x ile yazılır; 0x2A = 42.
Kodda 0x5A gibi değerler göreceğiz; bunlar sadece sayılardır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
XOR nedir?
XOR (^): iki bit farklıysa 1, aynıysa 0.
Özelliği: a ^ b ^ b == a → kendini geri alır .
c = a ^ 0x5A ;
a = c ^ 0x5A ;
Gizlemede çok kullanılır çünkü tersine çevrilebilir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Entropi (rastgelelik) nedir?
Entropi: bir verinin ne kadar "rastgele" göründüğü.
Kriptografik anahtarlar yüksek entropili görünür (düzensiz baytlar).
Saldırgan, binary'de yüksek entropili bir blok görürse "burada anahtar olabilir" der.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Fonksiyon, dal, koşul
Fonksiyon: bir işi yapan kod bloğu (grant_access).
Dal (branch): if gibi bir yol ayrımı.
Koşul: dalın hangi yöne gideceğini belirleyen ifade.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Temel blok (basic block)
Temel blok: dalsız, baştan sona akan komut dizisi.
Bir if gelince blok biter, iki yeni blok başlar.
Program = temel blokların birbirine bağlanması.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Kontrol akışı grafiği (CFG)
CFG (Control Flow Graph): temel blokları düğüm , geçişleri kenar yapan şema.
Programın "yol haritası"dır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Bir cümlede bu haftanın sorusu
Programı kullanıcıya teslim ettim; saldırgan artık ona sahip. Kodumu okumasını ve değiştirmesini nasıl
zorlaştırırım ?
Yanıt: kod gizleme kuralları. Başlıyoruz.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
1. Gizleme neden bir kuraldır?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Önce bir soru
Bir mobil uygulamayı kullanıcıya teslim ettiniz.
Kod artık kimin makinesinde çalışıyor?
Sunucudaki güvenlik denetimleriniz burada geçerli mi?
Saldırgan kaç kez deneyebilir?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
MATE: uçtaki saldırgan
M an-A t-T he-E nd = programın kendisine sahip saldırgan.
Binary dosya onda
Belleği okuyup değiştirebilir
Tersine derleyici, hata ayıklayıcı elinde
İstediği kadar dener
Buna beyaz kutu da denir (1. hafta).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
MATE saldırgan modeli — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Kara kutu ≠ beyaz kutu
Kara kutu
Beyaz kutu (MATE)
Görür
Girdi/çıktı
Her şey
Ortam
Uzak sunucu
Saldırganın cihazı
Deneme
Sınırlı
Sınırsız
Savunma
Kripto, doğrulama
+ gizleme, RASP, whitebox
Kripto kara kutu varsayar; teslimde bu varsayım çöker.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Kısa tarihçe — kod gizleme nereden geldi?
1976 — Diffie & Hellman: "anlaşılmaz ama çalışır" fikri (çaba-yoluyla koruma)
1997 — Collberg vd. taksonomi + güç–dayanıklılık–gizlilik–maliyet (bu dersin beş ailesi)
2000 — Wang vd.: kontrol akışı düzleştirme — kesin analiz genel durumda NP-zor (K-04)
2001 — Barak vd.: kusursuz gizleme imkânsızdır → "kırılamazlık" değil maliyet
2002 — Chow vd. whitebox AES (11. hafta) · 2015 Obfuscator-LLVM (Junod vd., K-11) · Tigress (14. hafta)
Gizleme, bir imkânsızlık teoreminin üzerine kurulmuş pratik bir geciktirme disiplinidir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Dürüst gerçek
Yeterli zamanı, becerisi ve motivasyonu olan saldırgan her gizlemeyi çözer.
Cookbook (Tarif 12.1): anti-tampering "kırılamaz" değildir.
Öyleyse amaç ne?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Amaç: kırmayı ekonomik olmaktan çıkarmak
Gizleme bir maliyet yükseltme aracıdır, sır saklama değil.
Kırmayı pahalı yap
Otomatikleştirmeyi zorlaştır
Diğer katmanlara zaman kazandır
Bunları üç kurala dökelim.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Kural 1 — Maliyeti değerin üstüne çıkar
Saldırı, korunan varlıktan pahalı olmalı.
10 TL'lik sırrı 1000 TL'lik çabayla korumak: israf
1000 TL'lik sırrı 10 TL'lik çabayla korumak: yetersiz
Önce varlığın değerini belirle , sonra korumayı seç.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Kural 2 — Otomasyonu kır
Bir kopyada işe yarayan saldırı, bütün kopyalarda işe yaramasın.
Bunun adı çeşitlendirme (bu haftanın 5. bölümü)
haftada araçla (Tigress --Seed)
Bir kırık, her yeri açmamalı.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Kural 3 — Diğer katmanlara zaman kazandır
Gizleme tek başına savunma değil ; bir katman .
RASP (6. hafta) çalışırken korur
Bütünlük denetimi, sunucu denetimi
Anahtar/sürüm yenilenene kadar dayanmak yeter
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Kaynağın dili: her önlem bir "kural"
Teknik kılavuz her önlemi üç başlıkla yazar:
Açıklama — neyi korur
Uygulama — nasıl yapılır
Örnek kullanım — nerede
Çoğu zaman bir uyum kimliğiyle (ör. "hassas veri düz loglanmaz").
Biz de öyle yazacağız: neyi korur · nasıl · maliyet · sınır .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
2. Taksonomi ve kural şablonu
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Gizleme neyi gizler?
Collberg'in sınıflandırması: gizlemeyi neyi gizlediğine göre ayırırız.
Beş aile var. Sırayla görelim.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Aile 1 — Düzen (layout)
Neyi gizler? Adları, biçimi, meta veriyi.
Sembolleri görünmez yapmak
Fonksiyon/dosya adlarını anlamsızlaştırmak
Sürümde günlüğü kaldırmak
4. haftada tanıştık; bu hafta derinleştiriyoruz.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Aile 2 — Veri
Neyi gizler? Sabitleri, dizeleri (string), değişkenleri.
Dize kodlama
Sabit dönüşümleri
Değişken bölme/birleştirme
Opak boolean
→ Bu haftanın 4. bölümü.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Aile 3 — Kontrol akışı
Neyi gizler? Algoritmanın yapısını.
Kontrol akışı düzleştirme
Opak yüklemler
Sahte ve ölü dallar
Rastgele çıkış
→ Bu haftanın 3. bölümü (birazdan).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Aile 4 — Önleyici (anti-analysis)
Neyi gizler? Analiz araçlarının işini.
Tersine derleyiciyi yanıltan yapılar
Çalışma anında kod çözme
→ Kavram bu hafta, RASP 6. hafta.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Aile 5 — Sanallaştırma
Neyi gizler? Makine kodunun kendisini.
Fonksiyonu özel bir VM'in bayt koduna çevirmek
→ Kavram bu hafta (K-10), araçla 14. hafta (Tigress Virtualize).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Sanallaştırma — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Beş aile: özet
Aile
Gizler
Düzen
Ad, biçim
Veri
Sabit, dize, değişken
Kontrol akışı
Yapı
Önleyici
Araç işini
Sanallaştırma
Makine kodu
Kural: aileler tek başına değil, birlikte kullanılır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Beş aile — güç ↑ maliyet ↑
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Sahada: hepsi bir arada
Sertifikalı bir üründe listelenen native önlemler bu haritanın tamamını kapsar:
sembol gizleme · ad anlamsızlaştırma · aritmetik dönüşüm · dize kodlama · opak boolean · sahte işlem · ölü dal · düzleştirme · rastgele çıkış · günlük kaldırma
Hiçbiri tek başına güçlü değil; güç birliktelikten .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Animasyon · Beş aile, tek fonksiyon
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Animasyon · Beş aile — uç durum (hepsi geçerli)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Gizleme ne VERİR?
Statik analize gecikme (strings, sembol, tersine derleme)
Otomatik saldırıya direnç (çeşitlendirmeyle)
Diğer katmanlara zaman
Ölçülebilir bir maliyet artışı
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Gizleme ne VERMEZ?
Bir sırrın gizliliği → o kriptonun işi
Bellekten okumaya koruma → RASP, whitebox
Kalıcı güvenlik → "kırılamaz" yoktur
Bedava koruma → her gizleme maliyet getirir
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Gizleme ne verir, ne vermez — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
⚠️ En sık hata
Gizlemeyi anahtar saklama sanmak.
Gömülü/gizlenmiş anahtar yine oradadır
Program çalışırken onu kullanmak zorunda → bellekte açığa çıkar
Çözme mantığı da içeride
Gizlilik kriptonun işidir, gizlemenin değil. (3. hafta)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
"Koruma kuralı" şablonu
KURAL K-xx: <teknik>
Neyi korur? : hangi varlık / kod bölümü
Hangi tehdit?: statik / dinamik / otomatik / kurcalama
Nasıl? : bir cümle (kavram)
Maliyet : boyut, hız, bakım, hata ayıklama
Sınır : neyi korumaz
Ölçüm : etkinlik nasıl doğrulanır
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Neden "Ölçüm" satırı şart?
Gizleme "var/yok" değildir.
Değerlendirici (13. hafta) her katmanın saldırıyı ne kadar geciktirdiğini sorar
Ölçümsüz koruma = iddia , kanıt değil
Projede S9'u bu şablonla yazacaksınız.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Dört ölçüt — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Animasyon · Koruma kuralı şablonu
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Animasyon · Koruma kuralı şablonu — uç durum (yalnız kavramsal varlık)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Bölüm 2 — kısa sınama
MATE saldırgan kara kutudan nasıl ayrılır?
Gizlemenin üç kuralı neydi?
Gizleme bir anahtarı korur mu? Neden?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Bölüm 2 — cevaplar
MATE programa sahiptir (kod/bellek onda, sınırsız deneme); kara kutu yalnız girdi/çıktıyı görür.
Maliyeti değerin üstüne çıkar · otomasyonu kır (çeşitlendir) · diğer katmanlara zaman kazandır.
Hayır. Anahtar çalışırken bellekte açığa çıkar ve çözme mantığı içeridedir; gizlilik kriptonun işidir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
3. Kontrol akışı kuralları
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Bu bölümün amacı
CFG'yi (ön bilgide tanımladık) bu bölümün iskeleti sayıyoruz; saldırganın ilk işi bu iskeleti çıkarmaktır.
4. haftada düzleştirmeye giriş yaptık.
Bu bölümde onu güçlendiren kuralları ekliyoruz:
K-01 opak yüklem · K-02 aritmetik kodlama · K-03 sahte/ölü · K-04 düzleştirme (derin) · K-05 rastgele çıkış · K-06 çağrı gizleme
Tüm örnekler sentetik , tek denetim: grant_access.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-01 · Opak yüklemler ve döngüler
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Opak yüklem — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-01 · Neyi korur?
Bir dalın hangi koşulda alındığını
Bir döngünün kaç kez döndüğünü
Fikir: değeri programcının bildiği ama aracın kolay çözemediği bir ifadeyle dallan.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-01 · Opak yüklem örneği
static int opaque_true (unsigned x) {
return ((x * (x + 1 )) & 1u ) == 0 ;
}
Programcı bilir: hep true . Statik analiz bunu kolay kanıtlayamaz.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-01 · Nasıl kullanılır?
if (opaque_true(counter)) {
state = real_step(state);
} else {
state = fake_step(state);
}
Analist iki yolu da "gerçek" sanır; zamanını sahte yola harcar.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-01 · Opak döngü
Kılavuz döngüleri ayrı kural yapar:
for/while doğrudan görünmez
Düzleştirmenin içine gizlenir
Gövde küçük bloklara bölünür
Yineleme bir durum değişkeniyle yönetilir
"Şu döngü N kez dönüyor" bilgisi CFG'den okunmaz.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-01 · Maliyet ve sınır
Maliyet: düşük–orta (fazladan aritmetik/dal)
Sınır: bilinen opak yüklem kalıpları otomatik tanınır
Karşı önlem: çeşitlendir (bölüm 5)
Ölçüm: önce/sonra temel blok sayısı
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Animasyon · Opak yüklem ekleme
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Animasyon · Opak yüklem — uç durum (büyük değerler)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-02 · Aritmetik kodlama
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-02 · Neyi korur?
Sabitleri ve basit hesapları.
"Bu sayı 0x1F, bu işlem bir XOR" gibi doğrudan okunabilir ipuçlarını gizler.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-02 · Denk ifadeler (MBA)
Bir işlemi, sonucu değişmeyen ama karmaşık görünen denkiyle değiştir:
a + b ≡ (a ^ b) + 2*(a & b)
x * 2 ≡ x << 1
Sonuç aynı, görünüm karmaşık. (MBA = mixed boolean-arithmetic)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-02 · Sabiti gizle
static uint8_t threshold (void ) {
uint8_t a = 0x37 , b = 0x1D ;
return (uint8_t )(a ^ b);
}
Binary dosyada 0x2A araması sonuç vermez.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-02 · Maliyet ve sınır
Maliyet: düşük
Sınır: MBA sadeleştiriciler (arybo/msynth) birçok ifadeyi açar
Kural: tek başına zayıf → kontrol akışıyla birleştir
Ölçüm: sabit için bayt/strings araması boş dönmeli
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-03 · Sahte işlem ve ölü dal
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Sahte işlem ≠ ölü dal — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-03 · İkisi farklıdır!
Kılavuz bunları ayrı kurallar yapar. Fark kritik:
Sahte işlem: çalışır, sonucu değiştirmez
Ölü dal: hiç çalışmaz (opak yüklemle korunur)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-03 · Karşılaştırma
Sahte işlem
Ölü dal
Çalışır mı?
Evet
Hayır
Sonuç
Değişmez
(çalışmaz)
Amaç
Gerçeği kalabalıkta gizle
Sahte yol göster
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-03 · Sahte işlem örneği
crc = crc32_update(crc, data, n);
crc ^= (constant ^ constant);
constant ^ constant == 0 → CRC değişmez, ama kod kalabalıklaşır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-03 · Ölü dal örneği
if (opaque_false()) {
fake_check();
}
Analist bu bloğu "gerçek" sanıp inceler; zaman kaybeder.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-03 · Maliyet ve sınır
Maliyet: düşük (sahte işlem) → orta (ölü dallar CFG'yi büyütür)
Sınır: ölü kod eleme, opak yüklem çözülürse dalı atar
Bağımlılık: opak yüklemin kalitesine bağlı
Ölçüm: ölü/gerçek dalı ayırt etme süresi
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-04 · Kontrol akışı düzleştirme
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-04 · Neyi korur?
Algoritmanın yapısını :
Blokların doğal komşuluğunu
"Hangi bloktan hangisine gidilir" bilgisini
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-04 · Fikir: dikey → yatay
Normal: bloklar birbirini izler (dikey akış)
Düzleştirilmiş: tüm bloklar tek switch dağıtıcıda (yatay)
Sıra yalnız bir durum değişkeninden okunur
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-04 · Şablon
int state = START;
for (;;) switch (state) {
case START: state = STEP1; break ;
case STEP1: state = condition ? STEP2 : FAIL; break ;
case STEP2: state = DONE; break ;
case FAIL: return DENIED;
case DONE: return GRANTED;
default : return DENIED;
}
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-04 · Tek başına zayıf
4. haftada söylemiştik: bu şablon deneyimli analiste kısa sürede çözülür.
Güç, güçlendirmelerden gelir. Sırayla:
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-04 · Güçlendirme 1 — durum değerleri (K-02)
case 1, 2, 3 yerine dağınık, aritmetikle üretilen değerler
Ardışıklık görünmez
Hangi adımın hangisini izlediği okunmaz
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-04 · Güçlendirme 2 — sahte/ölü (K-03)
Sahte case'ler eklenir
Hangi case gerçek , ayırt etmek zorlaşır
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-04 · Güçlendirme 3 — rastgele çıkış (K-05)
Hata, default dalından öngörülemeyen durumla çıkar
Başarısızlığın nerede olduğu okunmaz
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-04 · Güçlendirme 4 — opak geçişler (K-01)
case geçişleri sabit değil, opak koşullara bağlı
Statik izleme daha da zorlaşır
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-04 · Maliyet ve sınır
Maliyet: orta–yüksek (blok/dal çok artar, başarım düşer)
Sınır: yalnız düzleştirme → sembolik yürütmeyle açılır (bölüm 5)
Güç: güçlendirmelerden
Ölçüm: CFG düğüm/kenar sayısı, izleme süresi
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Animasyon · Kontrol akışı düzleştirme
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Animasyon · Düzleştirme — uç durum (en kısa yol)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-05 · Rastgele çıkış
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-05 · Neyi korur?
Bir denetimin nerede başarısız olduğunu.
Saldırgan tipik olarak:
"Başarısızlık dalını" bulur
Onu "başarı dalına" çevirir
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-05 · Nasıl?
if (!signature_valid(p)) {
state = unpredictable_value();
break ;
}
Doğrudan return DENIED yok; durum öngörülemeyen bir değere gider.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-05 · Başarı da benzer çıksın
Başarılı çıkış da aynı yöntemle
Böylece başarı ve başarısızlık akışta birbirine benzer
Analist "işte kabul dalı" diyemez
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-05 · Maliyet ve sınır
Maliyet: düşük
Sınır: tek başına değil, düzleştirmeyle anlamlı
Hedef: tek bayt yaması denetimi atlatmaya yetmesin
Ölçüm: "başarısızlık dalını bul ve çevir" süresi
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-06 · Çağrı ve bağımlılık gizleme
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-06 · Neyi korur?
İpuçlarını: "Şu fonksiyon memcmp çağırıyor → bir karşılaştırma yapıyor."
Standart kütüphane çağrıları ne yaptığınızı söyler .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-06 · Nasıl?
Kritik yolda memcmp yerine kendi sabit-zamanlı esit_mi
Bağlantı çözümleyicide tanınan ad görünmez
Sahte parametreler: hiç kullanılmayan parametreler ekle → imza yanıltıcı
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-06 · ⚠️ Sabit zamanlılığı bozma
Kendi karşılaştırmanı yazarken sabit zamanlı olsun (3. hafta).
Erken çıkışlı karşılaştırma → yan kanal açar
Koruma eklerken yeni açık yaratma
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-06 · Maliyet ve sınır
Maliyet: düşük–orta (kendi sürümleri bakım ister)
Sınır: davranış analizi ne yaptığını yine gösterebilir → bu bir gecikme
Ölçüm: binary dosyada tanınan kütüphane çağrısı sayısı
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Bölüm 3 — özet
K-01 opak yüklem/döngü · K-02 aritmetik kodlama
K-03 sahte işlem ≠ ölü dal
K-04 düzleştirme (güçlendirmelerle)
K-05 rastgele çıkış · K-06 çağrı gizleme
Hiçbiri tek başına yeterli değil; birlikte ve ölçülmüş .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Bölüm 3 — kısa sınama
Sahte işlem ile ölü dal farkı?
Düzleştirmeyi güçlendiren 4 kural?
Rastgele çıkış hangi saldırıyı zorlaştırır?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Bölüm 3 — cevaplar
Sahte işlem çalışır ama sonucu değiştirmez; ölü dal opak yüklemle hiç çalışmaz.
Durum değerlerini gizle (K-02) · sahte/ölü blok (K-03) · rastgele çıkış (K-05) · opak yüklem geçişleri (K-01).
"Başarısızlık dalını bul ve başarıya çevir" saldırısını; artık tek-bayt yama yetmez .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
4. Veri ve program bütünü kuralları
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Veri gizleme kuralları K-07–K-09 — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Kontrol akışı ≠ veri
Kontrol akışı (bölüm 3): algoritmanın yapısını gizler
Veri gizleme (bu bölüm): programın işlediği değerleri gizler
Dizeler, sabitler, tablolar, değişkenler.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-07 · Dize kodlama
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-07 · Neyi korur?
Binary dosyadaki okunabilir metinleri .
En ucuz saldırı adımı: strings.
"Lisans gecersiz" ya da bir URL → saldırgana nereye bakacağını söyler.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-07 · Fikir
Hassas dize derleme öncesi kodlanır (ör. XOR)
Binary dosyada kodlanmış durur
Kullanım anında çözülür
İş biter bitmez silinir
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-07 · Örnek (sentetik)
static const uint8_t HIDDEN[] = {0x3B ,0x2A ,0x2E ,0x2E ,0x2D };
void use (void ) {
char tmp[sizeof HIDDEN];
for (size_t i=0 ;i<sizeof HIDDEN;i++)
tmp[i] = HIDDEN[i] ^ 0x5A ;
process(tmp, sizeof HIDDEN);
secure_wipe(tmp, sizeof tmp);
}
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-07 · ⚠️ Kritik sınır
Çalışırken çözülmüş dize bellekte açık
Çözme anahtarı da binary dosyada
Bu bir statik tarama önlemidir
Sahada: çözme anahtarı parçalanır ve dağıtılır , çözme fonksiyonu ek denetimlerle korunur.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-07 · Dize gizleme ≠ anahtar saklama
Tekrar: dize gizleme strings'i durdurur, anahtar korumaz.
Anahtar için → whitebox (11. hafta) ya da donanım
Ölçüm: strings çıktısında hassas dize bulunmamalı
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Animasyon · Dize şifreleme
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Animasyon · Dize şifreleme — uç durum (hiçbiri geçerli değil)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-08 · Opak boolean
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-08 · Sorun: düz 0/1 tehlikeli
Bir denetimin sonucunu düz 0/1 döndürmek:
Saldırgan tek baytı çevirir
"Başarısız" → "başarılı" olur
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-08 · Fikir
Doğru/yanlış değerini:
Birden çok değere bağla
Tek bayt yamasıyla çevrilemeyecek biçimde tut
Fonksiyonlar düz boolean yerine opak dönüş kodu verir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-08 · Örnek (kavram)
typedef struct { uint32_t a, b; } Karar;
static Karar izin_ver (void ) {
return (Karar){ 0xA3C1 u, 0x5C3E u };
}
static int karar_izin_mi (Karar k) {
return (k.a ^ k.b) == 0xFFFF u;
}
Çağıran taraf iki alanı da doğrular.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-08 · Maliyet ve sınır
Maliyet: düşük
Sınır: yeterince incelenirse çözülür
Amaç: tek-bayt yamayı ve kaba dal-çevirmeyi engellemek
Ölçüm: sonucu çevirmek için gereken bağımsız nokta > 1
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Animasyon · Veri kodlama (opak boolean)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Animasyon · Veri kodlama — uç durum (hepsi geçerli)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-09 · Değişken bölme ve yeniden yapılandırma
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-09 · Neyi korur?
Hassas bir değişkenin bellekteki tanınabilir izini .
"32 baytlık blok = AES anahtarı" gibi kalıplar yol gösterir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-09 · Nasıl?
Değişkeni böl (32-bit'i iki 16-bit paydan üret)
Birden çok değişkeni tek söze birleştir
Dizileri yeniden düzenle
Tampon boyut/sıra/yerleşimini değiştir
Kullanımdan sonra rastgele değerle doldur
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-09 · Maliyet ve sınır
Maliyet: düşük–orta
Sınır: yalnız statik/kalıp analizini yavaşlatır
Ölçüm: hassas tamponun kalıptan tanınma süresi
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Program bütünü: K-10, K-11, K-12
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-10 · Sanallaştırma (kavram)
Neyi korur? Bir fonksiyonun makine kodunu .
Nasıl? Fonksiyon → özel bir VM'in bayt koduna ; binary'ye bayt kodu + küçük yorumlayıcı gömülür.
Saldırgan tanıdık kodu değil, önce çözmesi gereken özel komut kümesini görür.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-10 · Maliyet ve sınır
Maliyet: yüksek (yorumlanan kod yavaş; bakım pahalı)
Kullanım: yalnız en kritik, küçük, sık değişmeyen fonksiyonlar
Sınır: VM bir kez çözülürse tüm korunanlar açılır; çeşitlendirilmezse tüm kopyalar aynı
hafta: Tigress Virtualize
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-11 · Derleyici tabanlı (O-LLVM)
Neyi korur? Yukarıdaki kuralları, el ile değil derleyici geçişiyle.
LLVM tabanlı gizleyiciler: düzleştirme, sahte akış, komut değiştirme geçişleri
Kaynak okunur kalır; koruma bir derleme seçeneği
Her sürümde farklı tohum → çeşitlendirme kolay
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-11 · Maliyet ve sınır
Maliyet: orta (geçişlere bağlı)
Sınır: bilinen geçiş kalıpları tanınır; araç sürümüyle güncel kal
Ölçüm: farklı tohumların ürettiği binary'ler arası fark
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-12 · Dinamik şifreleme (kavram)
Neyi korur? En hassas kod bölümlerini, binary'de şifreli tutarak.
Nasıl? Bölüm şifreli durur → yalnız çalışacağı an çözülür → sonra yeniden şifrelenir/silinir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-12 · ⚠️ Risk
OS bellek korumalarıyla (DEP/NX, W^X ) doğrudan çatışır
Yanlış uygulanırsa hem çöker hem yeni açık yaratır
Çalışırken bir an kod bellekte açık → döküm yakalar
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
K-12 · Kural
Bir koruma eklerken başka bir korumayı kapatıyorsan , net kazancı ölç ve ödünleşim kaydına yaz.
Uygulamada çok seçici, küçük bölümlerde kullanılır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Java/yönetilen taraf (5. haftadan)
Bu haftanın kuralları native (C/C++) için
Yönetilen dilde karşılığı: ProGuard/R8 ad gizleme + ölü kod eleme + küçültme
-keep ve reflection ile çağrılan API'ler
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
İki taraf birlikte çalışır
Java tarafı R8 ile gizlenir
Native taraf bu haftanın kurallarıyla
Çapraz denetim: native Java'nın bütünlüğünü, Java native'in sağlamasını denetler (6. hafta RASP)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Bölüm 4 — özet
K-07 dize kodlama · K-08 opak boolean · K-09 değişken bölme
K-10 sanallaştırma (pahalı) · K-11 derleyici (O-LLVM) · K-12 dinamik (riskli)
Veri gizleme, kontrol akışı gizlemeyi tamamlar .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Bölüm 4 — kısa sınama
Dize gizleme anahtarı korur mu?
Opak boolean neden tek-bayt yamayı zorlaştırır?
Sanallaştırmanın iki büyük maliyeti?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Bölüm 4 — cevaplar
Hayır. Çözülen dize bellekte açıktır, çözme anahtarı içeridedir; yalnız statik (strings) taramayı durdurur.
Sonuç birden çok değere bağlıdır; sonucu çevirmek için >1 bağımsız noktayı değiştirmek gerekir.
Yüksek başarım (onlarca kat yavaş) ve yüksek bakım maliyeti; bu yüzden yalnız küçük/kritik fonksiyonlara.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
5. Çeşitlendirme ve ölçme
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Çeşitlendirme — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Çeşitlendirme: Kural 2'yi hatırla
Bir kopyada işe yarayan saldırı, bütün kopyalarda işe yaramasın.
Saldırgan bir kopyayı kırıp yamayı/betiği herkese dağıtabiliyorsa, bir kırık her yeri açar.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Kökeni: biyolojiden ödünç bir fikir
1993 — Fred Cohen, "Operating System Protection Through Program Evolution": sistemi zaman içinde
değiştiren yazılım → zamanda çeşitlendirme nin köküdür
1997 — Forrest, Somayaji, Ackley, "Building Diverse Computer Systems" (HotOS): davranışı değiştirmeyen
rastgeleleştirme (ör. yığın çerçevesi boyutu) bir arabellek taşmasını bile bozar → uzayda çeşitlendirme nin köküdür
Doğada çeşitlilik bir hastalığın türün tamamını değil yalnız dirençsizleri öldürmesini sağlar; yazılımda da
aynı fikir bir kırığın tüm kopyaları açmasını önler.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Çeşitlendirme nedir?
Aynı kaynaktan davranışça eş, yapıca farklı binary dosyalar üretmek.
Opak yüklemler, sahte bloklar, durum değerleri kopyadan kopyaya değişir .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
İki tür çeşitlendirme
Uzayda: her yapı/dağıtım farklı tohumla
Bir kopyaya yazılan saldırı diğerinde çalışmaz
Zamanda: her sürüm yeni düzenle
Eski sürüme yazılan saldırı yeni sürümde bozulur
10. haftadaki anahtar/sürüm yenilemeyle birlikte çalışır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Çeşitlendirme neyi engeller?
Gizlemenin gücünü artırmaz (bir kopyayı kırmak yine mümkün)
Ama ölçeklenmesini engeller
hafta: Tigress --Seed, RandomFuns ile araçla.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Çeşitlendirme etkinliği: basit ölçüt
Aynı kaynağı iki farklı tohumla derle
Korunan fonksiyonların bayt farkını ölç
Fark ne kadar yüksekse, bir saldırının diğerinde çalışma olasılığı o kadar düşük
Ölçütü S9'a yaz.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Animasyon · Çeşitlendirme
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Animasyon · Çeşitlendirme — uç durum (uzunluk hiç uymuyor)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Gizlemeyi ölçmek
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Neden ölçmek?
Bir koruma kararını savunmak için.
Collberg'in çerçevesi: dört boyut.
Bu dördü 13. haftadaki saldırı potansiyeli puanlamasının temeli.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Ölçüt 1 — Güç (potency)
Soru: insana ne kadar anlaşılmaz?
Nasıl: karmaşıklık ölçütleri — CFG düğüm/kenar, çevrimsel karmaşıklık, iç içe geçme derinliği (önce/sonra).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Ölçüt 2 — Dayanıklılık (resilience)
Soru: otomatik araca ne kadar dayanır?
Nasıl: bir deobfuscation aracının (sembolik yürütme, sadeleştirici) korumayı geri açma süresi/başarısı.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Ölçüt 3 — Gizlilik (stealth)
Soru: gizleme kendini ele veriyor mu?
Nasıl: gizlenmiş kod normal koddan istatistiksel ayırt edilebiliyor mu?
Ayırt edilirse saldırgan nereye bakacağını bilir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Ölçüt 4 — Maliyet (cost)
Soru: bize ne kadara mal oluyor?
Nasıl: boyut artışı, çalışma süresi, bellek, bakım, hata ayıklama zorluğu.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Düzleştirme öncesi (kavram)
Az düğüm, okunur akış.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Düzleştirme sonrası (kavram)
Çok düğüm, tek merkez; "sonra hangi blok" okunmaz.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Güç ölçümü örneği
Ölçüt
Önce
Sonra
Temel blok
5
34
Kenar
6
60
Çevrimsel karmaşıklık
3
28
Rakamları tersine derleyiciden alıp S9'a yazarsınız.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Maliyet ölçümü örneği
size ./program_clean ./program_obfuscated
Ölçüt
Önce
Sonra
Boyut
100 KB
128 KB
İşlem süresi
1.0×
1.7×
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Ölçümü yorumlamak
Güç ↑ (34 blok) ve maliyet ↑ (%28 boyut, 1.7× süre)
Bu ödünleşim beklenir
Karar: kazanç, varlık değerine göre kabul edilebilir mi?
"Güçlü" deme; bu sayıları göster.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Animasyon · Gizlemenin ölçülmesi
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Animasyon · Ölçüm — uç durum (en pahalı yol)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Dört ölçüt ödünleşir
Artırınca
Olan
Güç ↑ / dayanıklılık ↑
Maliyet ↑
Karmaşıklık ↑
Gizlilik ↓ (daha çok dikkat çeker)
İyi karar: varlığın değerine göre dört boyutu dengele.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Karar kuralı (S9'a yazılır)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Deobfuscation ve dayanıklılık
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Neden karşı tarafın araçlarını bilmeliyiz?
Dayanıklılığı doğru ölçmek için.
Bunları savunmayı sınamak için öğreniriz — saldırı için değil.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Karşı tarafın araçları — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Araç 1 — sembolik yürütme (KLEE)
Program yolları matematiksel kısıt olarak çözülür
Opak yüklem ve düzleştirme bu yolla açılabilir
Dayanıklılık kuralı: opak yüklemleri çözmesi pahalı (çarpanlara ayırma, karma) yapılara bağla, durum uzayını büyüt — ama maliyeti ölç .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Animasyon · Deobfuscation
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Animasyon · Deobfuscation — uç durum (sıralı çift/tek)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Araç 2 — MBA sadeleştirici
Kural: aritmetik kodlamayı tek başına bir sır katmanı sayma ; kontrol akışıyla birleştir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Araç 3 — kalıp tanıma
Bilinen kütüphane/geçiş kalıplarını tanır
Kural: çeşitlendir ; tek bir opak yüklem kalıbına ya da tek VM tasarımına bağlı kalma.
(uzayda: birden çok kalıp/tohum · zamanda: her sürümde kalıpları değiştir)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Ana çıkarım
Banescu vd. (Tigress + KLEE): hangi dönüşüm sembolik yürütmeye ne kadar dayanıyor, ölçülür .
Dayanıklılık bir iddia değil, ölçülen bir niceliktir.
"Güçlü" deme; bir sayı üret : "şu dönüşüm hattı, şu araca karşı, şu boyutta bir problemi şu sürede çözdürmedi."
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
6. Katmanlı savunma, proje, kapanış
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Katmanlı savunmada gizleme — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Gizlemenin katmanlı savunmadaki yeri
Katman
Hafta
İlişki
Bellek güvenliği/derleme
4
Yerine geçmez; birlikte
RASP
6
Gizleme RASP'ı gizler; RASP gizlemeyi korur
Whitebox
11
Anahtarın asıl koruması; gizleme kabuk
Anahtar yenileme
10
"Yenilenene kadar" zaman
Sertifikasyon
12–13
Geciktirme puanlanır
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Sahadan bir gözlem
Sertifikalı üründe native önlemler bu haftanın kurallarının tümünü kapsar.
Ama belge her önlemin yanına: "tek başına güçlü değildir."
Değerlendiriciyi ikna eden: birliktelik + çeşitlendirme + ölçülmüş geciktirme.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Uçtan uca: katman katman koruma
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Bu örneğin amacı
Tek bir sentetik denetimi (grant_access) alıp katman katman koruyacağız.
Her adımda: ne eklendi · ne kazandık · ne ödedik.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Adım 0 · Korumasız başlangıç
int grant_access (const char *token) {
if (token_valid(token))
return GRANTED;
return DENIED;
}
Zayıflık: tek dal, strings, tek bayt yamasıyla atlanır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Adım 0 · Saldırgan ne yapar?
strings → GRANTED/DENIED ve ilgili dizeler
Tersine derle → tek if, iki dönüş
Başarısızlık dalını başarıya çevir (tek bayt)
Süre: dakikalar. Uzmanlık: düşük.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Adım 1 · K-07 dize/sabit kodla
static int grant_code (void ) { return 0x9E ^ 0x9F ; }
Kazanç: strings hassas metni bulmaz
Maliyet: çok düşük
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Adım 1 · Ölçüm
Ölçüt
Adım 0
Adım 1
strings hassas dize
3
0
Binary boyut
temel
+%0.5
İlk katman en ucuz, en yüksek getiri.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Adım 2 · K-02 aritmetik kodla
int threshold = ((a ^ b) + 2 *(a & b));
Kazanç: sabit/hesap doğrudan okunmaz
Maliyet: düşük
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Adım 3 · K-04 düzleştir
int state = START;
for (;;) switch (state){
case START: state = check()?STEP:FAIL; break ;
case STEP: state = DONE; break ;
case FAIL: return DENIED;
case DONE: return GRANTED;
}
Tek if yok; sıra durum değişkeninde.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Adım 3 · Ne değişti?
CFG artık "yatay" — bloklar tek switch'te
"Hangi dal başarı" doğrudan okunmaz
Maliyet: orta (blok/dal artar, biraz yavaşlar)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Adım 4 · K-05 rastgele çıkış
if (!check()) { state = unpredictable_value(); break ; }
Hata nerede yakalandı, akıştan okunmaz
Tek bayt yaması artık yetmez
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Adım 5 · K-03 sahte + ölü
crc ^= (s ^ s);
if (opaque_false()) fake();
Gerçek mantık kalabalık içinde
Maliyet: orta
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Adım 6 · K-08 opak boolean
Decision k = allow();
if (decision_grants(k)) apply();
Sonuç düz 0/1 değil → tek bayt çeviremez
Çevirmek için birden çok nokta gerekir
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Katmanların birikimli etkisi
Adım
Kural
Saldırı süresi (nispi)
Maliyet
0
—
1×
—
1
K-07
2×
çok düşük
2
K-02
3×
düşük
3
K-04
8×
orta
4–6
K-05/03/08
20×+
orta
(Nispi, örnek amaçlı; gerçek değerler ölçülür.)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Adım 7 · K-10 sanallaştırma?
Yalnız en kritik fonksiyon için
Maliyet: yüksek (onlarca kat yavaş)
Çoğu denetim için gereksiz
Kural: değeri düşükse buraya gelme.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Uçtan uca: çıkarım
Her katman saldırıyı biraz daha pahalı yaptı
Her katman bir maliyet ekledi
Nerede durduğun varlığın değerine ve ölçtüğüne bağlı
Bu tablo, S9'a koyacağın koruma tablosunun ta kendisidir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Proje · S9 (ileri sağlamlaştırma) — 1
1. Koruma tablosu
2–3 kritik bölüm için (lisans, anahtar türetme, bütünlük) kural şablonunu doldur:
neyi korur · tehdit · nasıl · maliyet · sınır · ölçüm
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Proje · S9 — 2
2. Ölçüm
En az bir teknik için önce/sonra:
strings çıktısındaki hassas dize sayısı
CFG düğüm sayısı
binary boyut, bir işlemin süresi
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Proje · S9 — 3, 4
3. Çeşitlendirme kararı: evet/hayır + gerekçe
4. Sınır ve kalan risk: her koruma neyi korumaz ?
"Bu dize gizleme anahtarı korumaz; anahtar için S8 whitebox/donanım."
İleride: S15 (14. hafta, gizlemeyi derleme hattına koymak) · S16 (12. hafta, davranışın bozulmadığının testi).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Değerlendirici gözüyle
S9'da aranan: "çok teknik kullandım" değil .
Aranan: her tekniğin gerekçesi ve ölçüsü .
Ölçülmemiş koruma = iddia. Kanıt değil.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Kendini sınama (1–6)
MATE ne? Kriptografiyi neden tek başına yetersiz bırakır?
"Pahalı kılar" — varlık değeri örneğiyle?
Sahte işlem ≠ ölü dal?
Düzleştirme neden tek başına zayıf? 3 güçlendirici?
Rastgele çıkış hangi saldırıyı zorlaştırır?
Dize gizleme anahtarı korur mu?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Kendini sınama — cevaplar (1–6)
MATE = Man-At-The-End: saldırgan cihaza tam sahip (bellek, debugger, anahtar). Kripto güvenli uç varsayar; MATE'de anahtar çalışırken açığa çıkar → kripto tek başına yetmez.
Gizleme kırılamazlık değil, saldırıya daha çok zaman/beceri/araç gerektirir. 100 TL'lik içeriği kırmak 10.000 TL emek isterse saldırgan vazgeçer.
Sahte işlem çalışır ama sonucu kullanılmaz (analizciyi yorar); ölü dal opak yüklemle hiç çalışmaz .
Düzleştirmede dispatcher deseni tanınır, durum değişkeni izlenir. Güçlendirici: opak yüklem · durum değişkeni şifreleme · sahte durum/bloklar + rastgele çıkış .
Desen/eşleştirme ve otomatik betik saldırılarını (aynı giriş→aynı kalıp bekleyen) ve sembolik yürütmeyi zorlaştırır.
Hayır. Dize/tablo gizleme statik strings'i zorlaştırır ama anahtar çalışırken bellekte açığa çıkar → whitebox/HSM gerekir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Kendini sınama (7–12)
Sanallaştırmanın iki maliyeti?
Kendini değiştiren kod hangi OS korumasıyla çatışır?
Dört ölçüt; hangileri ödünleşir?
Çeşitlendirme gücü mü ölçeklenmeyi mi engeller?
KLEE hangi kuralları zorlar? Dayanıklılık nasıl artar?
Bir bölüm için kural şablonunu doldur.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Kendini sınama — cevaplar (7–12)
Büyük performans cezası (yorumlayıcı yavaş) + boyut artışı (VM + bytecode); bakım/hata ayıklama zorluğu.
W^X / DEP-NX (yazılabilir+çalıştırılabilir bellek yasağı); kod sayfasını yazmak mprotect/VirtualProtect ister, engellenir/şüphelidir.
Güç · dayanıklılık · gizlilik · maliyet. Güç/dayanıklılık ↑ → maliyet ↑ ve gizlilik ↓ (anormal görünür). Başlıca ödünleşim: dayanıklılık ↔ maliyet .
Ölçeklenmeyi engeller — tek kopyanın gücünü artırmaz; bir kırık tüm kopyalara yayılmaz (saldırının yeniden kullanımını kırar).
KLEE sembolik yürütme; opak yüklem/düzleştirmeyi çözebilir. Kural: yüklemleri sembolik yürütmeye dayanıklı (girdi-bağımlı, çözülmesi zor) yap; yol patlatan yapılar dayanıklılığı artırır.
Örnek: Kural [düzleştirme] → Amaç [akışı gizle] → Nasıl [Tigress Flatten + opak yüklem] → Ölçüm [boyut +%X, hız −%Y, komut N→M]. Ölçüm satırı şarttır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Terimler sözlüğü (1)
Terim
Anlam
MATE / beyaz kutu
Programa sahip saldırgan
Opak yüklem
Değeri programcının bildiği, aracın zor çözdüğü koşul
Düzleştirme
Akışı tek switch'e taşıma
Sahte işlem
Çalışan ama sonucu değiştirmeyen kod
Ölü dal
Hiç çalışmayan (opak yüklemli) dal
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Terimler sözlüğü (2)
Terim
Anlam
Opak boolean
Tek baytla çevrilemeyen doğru/yanlış
Sanallaştırma
Fonksiyonu özel VM bayt koduna çevirme
Çeşitlendirme
Aynı kaynaktan yapıca farklı kopyalar
Güç/dayanıklılık/gizlilik/maliyet
Gizleme ölçütleri
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Kaynaklar
Cookbook (Viega & Messier) Bölüm 12 — anti-tampering
Güvenli programlama teknik kılavuzu — native karşı önlemler
Collberg & Nagra, Surreptitious Software — taksonomi, ölçme
Schrittwieser vd. (ACM CSUR 2016) — genel bakış, deobfuscation
Banescu vd. — Tigress + KLEE dayanıklılık ölçümü
Obfuscator-LLVM — derleyici tabanlı
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 9
Bir sonraki hafta
10. hafta — Sertifikalar ve kriptografik yöntemler
Bu hafta "gizleme anahtarı korumaz" dedik; 10. haftada anahtarların doğru seçimi, yaşam döngüsü ve PKI ile korunması işlenir. Kural (bu hafta) → whitebox (11. hafta) → otomasyon (14. hafta): bu üç hafta bir bütündür.
Gizleme bir kale değil, bir geciktirme katmanıdır : kırılamazlık vermez, maliyet yükseltir; gücü birliktelikten , çeşitlendirmeden ve ölçülmüş olmaktan gelir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
Konuşma notu: Bu hafta ileri kod gizleme kurallarını işliyoruz. Çerçeve: gizleme kırılamaz kılmaz, pahalı kılar. Her tekniği bir güvenlik kuralı olarak veriyoruz — neyi korur, maliyeti, sınırı, nasıl ölçülür. Anahtar koruması gizleme değildir (11. hafta).
Konuşma notu: Bugün 4. haftadaki gizleme girişini ileri düzeye taşıyoruz ve ölçmeyi ekliyoruz. Ana çerçeve: gizleme kırılamazlık vermez, maliyet yükseltir. Her tekniği bir "kural" olarak veriyoruz.
Konuşma notu: Öğrencilere sordurun. Cevap: saldırganın makinesinde, sunucu denetimi geçersiz, sınırsız deneme.
Konuşma notu: Dört aileyi gerçek grant_access/obfuscated.c satırlarıyla gösterin, sonra dağıtıcıyı 10 jetonla çalıştırıp davranışın korunduğunu canlı izleyin.
Konuşma notu: 10 jetonun onu da geçerli — dağıtıcı her seferinde tam dolaşım yapar, hepsi GRANTED.
Konuşma notu: 5 gerçek kural x 2 varlık (ölçülmüş grant_access, kavramsal lisans_dogrula) — hangisinin ölçüldüğünü, hangisinin örnek olduğunu vurgulayın.
Konuşma notu: 10 satırın onu da lisans_dogrula — hiç ölçüm yok, "ölçtük" ile "örnekledik" farkını burada net gösterin.
Konuşma notu: önce sordur, sonra bu slaytı aç.
Konuşma notu: grant_access'in gerçek opaque_zero(x)=(x*(x+1))&1'ini birçok x için tarayın; hepsi 0 çıkıyor. Sonra gerçek kullanım satırını (40) gösterin.
Konuşma notu: JS güvenli tamsayı sınırının hemen altındaki büyük x değerlerinde de özdeşlik hâlâ 0 çıkıyor.
Konuşma notu: clean.c'nin doğal if-zinciri ile obfuscated.c'nin switch dağıtıcısını aynı jetonlarla yan yana çalıştırın.
Konuşma notu: hepsi yanlış uzunlukta — dağıtıcı DECODE/COMPARE'a hiç girmeden en kısa yoldan default'a düşüyor.
Konuşma notu: önce sordur, sonra aç.
Konuşma notu: ENCODED[]'in gerçek yaşam döngüsü — kodlu bekler, çözülür, HEMEN silinir; sonra bu döngünün her çağrıda tekrarlandığını gösterin.
Konuşma notu: 10 jetonun hiçbiri geçerli değil — yine de çöz+sil döngüsü her seferinde aynen çalışıyor, canlı doğrulayın.
Konuşma notu: saf int result (0/1) ile Decision{a,b} yan yana; bellek dökümünde hangisi anlamı hemen ele veriyor?
Konuşma notu: 10 jetonun onu da geçerli — a^b her seferinde 0xFFFF, hiçbir zaman değişmiyor.
Konuşma notu: önce sordur, sonra aç; ardından 5. bölüm.
Konuşma notu: iki makale de 30+ yıllık; Tigress'in --Seed'i bu fikri tek bir bayrağa indirger (14. hafta).
Konuşma notu: SEED=1001 ve SEED=2002 için MASK/ENCODED farklı ama 10 jetonda da GRANTED/DENIED aynı çıkıyor — canlı gösterin.
Konuşma notu: iki tohum da en kısa yoldan anında reddediyor — anlaşma yalnız "tam yolda" değil, her yolda geçerli.
Konuşma notu: gerçek 27->49 komut / 4->9 dal-çağrı sayılarını gösterin, sonra dinamik maliyeti (jeton başına adım) 10 jetonla canlı izleyin.
Konuşma notu: hepsi geçerli jeton — dağıtıcı her seferinde en uzun (6 adım) yolu izliyor, dinamik maliyet tavanda.
Konuşma notu: gerçek opaque_zero'yu periyodik kanıtla (x mod 2) sabit katlayın; sonra R-04/R-05/R-07'nin HÂLÂ ayakta olduğunu vurgulayın — dayanıklılık != maliyet.
Konuşma notu: x=0..9 sırayla — periyodu (2) doğrudan gözle gösterir, "yalnız 2 kalan sınıfı yeterli" iddiasını somutlaştırır.
Konuşma notu: Bu bölüm bütün kuralları tek örnekte birleştirir; tahtada canlı yapılabilir.