Previous slide Next slide Toggle fullscreen Open presenter view
CEN429 Güvenli Programlama · Hafta 14
Tigress ve Çeşitlendirme
CEN429 Güvenli Programlama — Hafta 14
Dr. Öğr. Üyesi Uğur CORUH · 18.12.2026
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Bugünün planı (3 saat)
Saat
Bölüm
Konu
1
1
Kaynaktan kaynağa gizleme · Tigress · lisans · temel akış
2
2
Dönüşüm aileleri · 9. hafta eşlemesi · dönüşüm hattı · adım adım örnek
3
3–5
Çeşitlendirme · ölçme · sınıf içi akış · derleme hattı (S15) · proje
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Kısa tarihçe — kaynaktan kaynağa gizleme ve çeşitlendirme
1993 — Cohen: çeşitlendirme fikri (aynı işlev, farklı ikili)
1997 — Collberg vd. gizleme taksonomisi (9. haftanın temeli)
2013 — Obfuscator-LLVM : derleyici tabanlı gizleme
2010'lar — Tigress : C için kaynaktan kaynağa + sanallaştırma + çeşitlendirme
2016–17 — Banescu vd. Tigress+KLEE ile dayanıklılığı ölçer
Ana kural: dayanıklılık ↔ maliyet ; koruma varlığın değeriyle orantılı seçilir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Bu hafta nereye oturuyor?
9. hafta: gizleme kurallarını el ile öğrendik
11. hafta: anahtar için whitebox
Bu hafta (14): aynı kuralları araçla, otomatik ve çeşitlendirilmiş uygulamak → Tigress
Üçü bir bütün; bugün otomasyon adımı.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Öğrenme çıktısı
Bu hafta ÖÇ.3 (ikili uygulama korumaları) üstünedir.
Sonunda yapabileceğiniz:
Kaynaktan kaynağa gizlemeyi açıklamak
Bir dönüşüm hattı kurmayı tarif etmek
Gizlemeyi çeşitlendirip ölçmek
Gizlemeyi derleme hattına koymak (S15)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Baştan bir hatırlatma
9. haftanın ana kuralı bu hafta da geçerli:
Gizleme kırılamazlık vermez, maliyet yükseltir.
Tigress bir sihir değil ; el ile yaptığımızı otomatikleştirir ve çeşitlendirmeyi kolaylaştırır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Önceki haftalardan gelenler
Kaynak kod, derleyici, ikili dosya — insanın yazdığı program metninin derleyiciyle makine koduna çevrilip çalıştırılabilir hale gelmesi (Hafta 9)
Kod gizleme (obfuscation) — davranışı değiştirmeden kodu anlaşılması zor kılan, saldırı maliyetini artıran karşı önlem (Hafta 9)
9. haftanın gizleme kuralları (K-01–K-12) — opak yüklem, aritmetik kodlama, kontrol akışı düzleştirme, dize kodlama, değişken bölme, sanallaştırma gibi el ile uygulanan kurallar; bu hafta bunları Tigress'in dönüşümleriyle tek tek eşliyoruz (Hafta 9)
CFG (kontrol akışı grafiği) — temel blokları düğüm, geçişleri kenar yapan şema (Hafta 9)
Sembolik yürütme — program yollarını matematiksel kısıt olarak çözen otomatik analiz (ör. KLEE) (Hafta 9)
Çeşitlendirme (diversification) — aynı kaynaktan davranışça eş, yapıca farklı ikili dosyalar üretme fikri; bu hafta Tigress'in --Seed bayrağıyla otomatikleştiriyoruz (Hafta 9)
CI ve derleme hattı — her kod değişikliğinde otomatik derleme/test adımlarını çalıştıran sistem (Hafta 4)
Sürüm kimliği ve özet (hash) değeri — bir yazılımın hangi ikili/kaynak/özet üçlüsüyle dağıtıldığını gösteren kayıt; bu hafta buna bir de tohum alanı ekliyoruz (Hafta 1)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
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
Kaynaktan kaynağa (source-to-source) gizleme, Tigress ve lisansı
Bölüm 1
Dönüşüm (--Transform) ve hedef seçimi (--Functions)
Bölüm 1
Dönüşüm aileleri ve 9. hafta eşlemesi
Bölüm 2
Dönüşüm hattı (pipeline) ve adım adım maliyet artışı
Bölüm 2
Çeşitlendirme aracı: tohum (--Seed)
Bölüm 3
Gizleme ve çeşitlendirmeyi ölçmek
Bölüm 3
Sınıf içi yedi adımlık akış
Bölüm 4
S15 derleme ve dağıtım hattı, dönem projesi
Bölüm 5
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Kaynaktan kaynağa (source-to-source)
Girdi: C kaynağı. Çıktı: yine C kaynağı — ama gizlenmiş.
Sonra normal derleyicinizle derlenir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Dönüşüm: kaynağa uygulanan tek bir gizleme işlemi (ör. düzleştirme).
Araç birçok dönüşüm sunar; siz hangisini, nereye seçersiniz.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Dönüşüm hattı (pipeline)
Hat: birden çok dönüşümün sırayla uygulanması.
Her dönüşüm bir öncekinin çıktısına uygulanır.
Sıra önemlidir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Tohum (seed) nedir?
Tohum: rastgeleliği yöneten bir başlangıç sayısı.
Aynı dönüşüm + farklı tohum = farklı gizlenmiş çıktı.
Çeşitlendirmenin anahtarı budur.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
CLI (komut satırı) nedir?
CLI (Command-Line Interface): komutları yazarak çalıştırdığınız arayüz.
Tigress bir CLI aracıdır: tigress --Transform=... dosya.c.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Birim testi (unit test)
Birim testi: bir fonksiyonun doğru çalıştığını otomatik denetleyen küçük test.
Gizlemeden sonra aynı testler geçmeli (davranış korunmalı).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
1. Kaynaktan kaynağa gizleme ve Tigress
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
El ile gizlemenin üç sorunu
9. haftada kuralları el ile uyguladık. Öğreticiydi ama:
Hataya açık — davranışı bozabilir
Bakımı zor — kaynak okunamaz olur
Çeşitlendirilemez — her kopyayı elle farklılaştıramazsınız
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Çözüm: araca yaptır
Gizlemeyi bir araç yapsın.
Siz okunur kaynağı koruyun.
Gizleme, derleme hattında otomatik bir adım olsun.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Kaynaktan kaynağa fikri
Bakım maliyeti okunur kaynakta kalır; dağıtılan kaynak gizli.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Sıralı dönüşümler — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Tigress nedir?
Arizona Üniversitesi'nden Collberg ve ekibinin geliştirdiği kaynaktan kaynağa C gizleyici/çeşitlendirici .
haftadaki el ile kuralların otomatik karşılığı.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Tigress · özellikler
Çok platform: Linux, macOS, Windows, Android
Mimariler: Intel, ARM, WebAssembly
Derleyiciler: GCC, Clang, MSVC
Güncel sürüm: v4
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
⚠️ Lisans (önemli)
Kâr amacı gütmeyen (akademik/araştırma) kullanım: ücretsiz .
Ticari kullanım: Arizona Üniversitesi'nden lisans gerekir.
Kaynak kodu açık değil; araştırmacılar şifreli kaynağa erişim isteyebilir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
⚠️ Derste kullanım kuralı
Derste Tigress ikilisi ya da eski sürüm dağıtılmaz.
Öğrenciler güncel sürümü resmî siteden (tigress.wtf) kendileri indirir.
Lisans koşulunu orada doğrular.
Yalnız kendi kodunuza, kendi makinenizde uygularsınız.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Neden araç, el ile değil? (1)
El ile (9. hafta)
Araçla (Tigress)
Öğreticidir
Ölçeklenir
Hataya açık
Davranışı korur (test edilmiş)
Kaynak okunamaz
Okunur kaynak sizde
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Neden araç, el ile değil? (2)
El ile
Araçla
Çeşitlendirme elle olmaz
Tohumla otomatik
Tek tip, tanınabilir
Dönüşüm+tohum ile değişken
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Ama araç da sihir değil
Tigress de kırılamazlık vermez , maliyet yükseltir.
İyi bilinen bir aracın kalıpları zamanla tanınabilir.
Bu yüzden çeşitlendirme ve katmanlı savunma (RASP, sunucu) yine şart.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Temel akış · tek dönüşüm
tigress --Transform=Flatten --Functions=erisim_ver \
--out=gizli.c temiz.c
cc -o program gizli.c
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Temel akış · üç fikir
--Transform=... hangi dönüşüm (Flatten = düzleştirme, 9. hafta K-04)
--Functions=... hangi fonksiyonlara (yalnız hassas olanlara — maliyet kuralı)
Çıktı yine C; kendi derleyicinizle derlersiniz
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Neden --Functions ile hedef seçiyoruz?
Gizleme her fonksiyona uygulanırsa program çok yavaşlar/şişer .
Yalnız hassas fonksiyonları (lisans, anahtar türetme, bütünlük) hedefleriz.
Bu, 9. haftadaki "maliyet kuralının" araçtaki hâli.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
"Bu fonksiyonu gizlemeli miyim?" — 1
Soru 1: Bu fonksiyon hassas mı? (lisans, anahtar, bütünlük, denetim)
Hayır → gizleme; maliyeti boşa harcama.
Evet → devam.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
"Bu fonksiyonu gizlemeli miyim?" — 2
Soru 2: Değeri yüksek mi?
Orta → EncodeLiterals + EncodeArithmetic + Flatten + AddOpaque.
Yüksek ve küçük → yukarısı + Virtualize.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
"Bu fonksiyonu gizlemeli miyim?" — 3
Soru 3: Her durumda:
Çeşitlendir (tohum)
Ölç (boyut, süre, blok)
Birim testleriyle davranışı doğrula
S9/S15'e yaz
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Karar akışı · tek bakış
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Bölüm 1 — kısa sınama
Kaynaktan kaynağa gizleme nedir?
El ile gizlemeye göre üç avantaj?
Tigress derste neden dağıtılmaz?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Bölüm 1 — cevaplar
Kaynak koda dönüşüm uygulanıp yeni kaynak (yine C) üretilir, sonra normal derlenir. Tigress C alır, gizlenmiş C verir.
Tekrarlanabilir/otomatik (her build), tutarlı ve ölçekli (çok fonksiyon), orijinal kaynak temiz kalır + tohumla çeşitlendirme.
Lisans/kullanım koşulları ; herkes kendi indirir. Demolar Tigress yoksa temiz türev/fallback ile çalışır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
2. Dönüşüm aileleri ve hat
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Dönüşümler = 9. hafta kuralları
Tigress dönüşümleri, 9. haftada gördüğümüz gizleme ailelerine karşılık gelir (K-01–K-12).
Grup grup görelim; her birini bir K-kuralına bağlayacağız.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Dönüşüm ↔ kural eşlemesi — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Kontrol akışı dönüşümleri
Flatten: kontrol akışını düzleştirir → K-04
InitOpaque / AddOpaque / UpdateOpaque: opak yüklem + sahte dal → K-01, K-03
Sıra: önce InitOpaque , sonra AddOpaque .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Veri dönüşümleri
EncodeArithmetic: aritmetiği denk karmaşık ifadeyle (MBA) → K-02
EncodeLiterals: sabit ve dizgeleri kodlar (ucuz, neredeyse her zaman uygulanır) → K-07, K-08
EncodeData: değişken gösterimini kodlar → K-09
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Fonksiyon dönüşümleri
Split / Merge: fonksiyonları böler/birleştirir → K-06
Virtualize: fonksiyonu özel VM bayt koduna → K-10
Jit: kodu çalışma anında üretir; OS korumalarıyla dikkatli kullanılmalı → K-12 (dinamik)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Analiz-önleme dönüşümleri
AntiBranchAnalysis / AntiAliasAnalysis / AntiTaintAnalysis: statik analiz tekniklerini zorlaştırır → önleyici aile
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Çeşitlendirme dönüşümleri
RandomFuns: rastgele sahte fonksiyonlar
RndArgs: sahte parametreler
Tohumla birleşince her yapı farklı → çeşitlendirme, K-06
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Uzayda/zamanda çeşitlendirme — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Dönüşüm ↔ kural · tablo
Tigress
Ne yapar
9. hafta
Flatten
Düzleştirme
K-04
AddOpaque
Opak yüklem/sahte
K-01, K-03
EncodeArithmetic
Aritmetik kodlama
K-02
EncodeLiterals
Sabit/dize
K-07, K-08
Virtualize
Sanallaştırma
K-10
RandomFuns/RndArgs
Çeşitlendirme
K-06
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Aileler ve maliyet
Ucuz: EncodeArithmetic, EncodeLiterals
Orta: Flatten, opak yüklemler
Pahalı: Virtualize (onlarca kat yavaşlama)
Bu yüzden Virtualize yalnız küçük, kritik fonksiyonlara; --Functions ile hedeflenir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Dönüşümleri sırayla birleştirmek
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
"Tek teknik değil, birlikte"
9. haftanın en önemli kuralı.
Tigress'te bu, dönüşümleri sırayla uygulamak demektir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Kavramsal hat
tigress \
--Transform=EncodeLiterals --Functions=erisim_ver \
--Transform=EncodeArithmetic --Functions=erisim_ver \
--Transform=Flatten --Functions=erisim_ver \
--Transform=AddOpaque --Functions=erisim_ver \
--out=gizli.c temiz.c
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Hat ne yapıyor?
Tek denetimi (erisim_ver):
Sabit/dize kodla
Aritmetiğini kodla
Düzleştir
Opak yüklemlerle güçlendir
= 9. haftada K-04'ün "güçlendirilmiş düzleştirme" dediği şeyin otomatik hâli.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
⚠️ Sıra ve test kuralı
Dönüşüm sırası sonucu etkiler ; kimi sıra başarımı gereksiz bozar.
Kural: her hattan sonra birim testlerini çalıştır (davranış korunmuş mu?) ve boyut/hız ölç.
Gizleme davranışı asla değiştirmemeli; değiştiriyorsa hat yanlış.
Bu, 12. haftadaki "S16 sonuçları"na bağlanır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Adım adım örnek
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Adım adım güçlendirme — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Başlangıç · temiz.c
int erisim_ver (const char *jeton) {
if (jeton_gecerli(jeton)) return IZIN;
return RED;
}
Korumasız: tek dal, strings, tek bayt yamasıyla atlanır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Adım 0 · saldırgan
strings → IZIN/RED
Tersine derle → tek if
Başarısızlık dalını başarıya çevir
Süre: dakikalar.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Katman katman
Adım
Dönüşüm
Ne değişir
Maliyet
0
—
Tek bayt yamasıyla atlanır
—
1
EncodeLiterals
IZIN/RED düz görünmez
Çok düşük
2
EncodeArithmetic
Karşılaştırma karmaşık
Düşük
3
Flatten
Tek dal görünmez
Orta
4
AddOpaque
Sahte dallar
Orta
5
Virtualize (gerekirse)
VM bayt kodu
Yüksek
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Çıkarım
Her adım saldırıyı biraz daha pahalı yapar.
Her adım bir maliyet ekler.
Nerede duracağınız: varlık değeri + ölçtüğünüz maliyet .
Adım 5 (Virtualize) çoğu denetim için gereksiz.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Bu tablo → S9'un ta kendisi
Bu "adım / dönüşüm / ne değişir / maliyet" tablosu,
projede S9 koruma tablonuzun doğrudan karşılığıdır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
O-LLVM (derleyici tabanlı)
Obfuscator-LLVM: dönüşümleri derleme sırasında uygular.
Kaynaktan kaynağa değil; LLVM ara temsili üstünde.
hafta K-11. Tigress'e bir alternatif.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Tigress mi, O-LLVM mi?
Tigress
O-LLVM
Nerede
Kaynak (C→C)
Derleyici (IR)
Görünürlük
Gizli kaynağı görebilirsin
Derleme adımı
Dönüşüm zenginliği
Çok (Virtualize dahil)
Daha sınırlı
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Ortak sınır
İkisi de iyi bilinir → kalıpları tanınabilir.
İkisi de çeşitlendirme ve katmanlı savunma ister.
İkisi de kırılamazlık vermez .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Bölüm 2 — kısa sınama
Flatten, EncodeArithmetic, Virtualize hangi K-kurallarına karşılık?
Neden --Functions ile hedef seçilir?
Her hattan sonra mutlaka yapılacak iki şey?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Bölüm 2 — cevaplar
Flatten = kontrol akışı düzleştirme; EncodeArithmetic = aritmetik/veri gizleme; Virtualize = sanallaştırma (en güçlü, en pahalı).
Her fonksiyonu gizlemek maliyeti/performansı patlatır ; yalnız hassas fonksiyonları seçmek dayanıklılığı oraya yoğunlaştırır.
(1) Davranışı test et (birim testi geçmeli), (2) maliyeti ölç (boyut/hız/komut sayısı, önce-sonra).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
3. Çeşitlendirme ve ölçme
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
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ı 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 14
Çeşitlendirme nedir?
Aynı kaynaktan davranışça eş, yapıca farklı ikili dosyalar.
Tigress bunu bir tohum ile yapar:
Aynı dönüşümler + farklı tohum → opak yüklem, sahte dal, durum değerleri değişir .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
İki tohum, iki farklı ikili
tigress --Seed=1001 --Transform=Flatten --Transform=AddOpaque \
--Functions=erisim_ver --out=gizli_a.c temiz.c
tigress --Seed=2002 --Transform=Flatten --Transform=AddOpaque \
--Functions=erisim_ver --out=gizli_b.c temiz.c
gizli_a ve gizli_b aynı işi yapar; makine kodları farklı .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
İki tür çeşitlendirme
Uzayda: farklı kullanıcı/cihaza farklı tohumlu kopya → bir kopyanın saldırısı diğerinde çalışmaz.
Zamanda: her sürüm yeni tohum → eski 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 14
Çeşitlendirme neyi engeller?
Gizlemenin gücünü artırmaz (bir kopyayı kırmak yine mümkün).
Ama ölçeklenmesini engeller.
RandomFuns, RndArgs de tohumla birleşince yapıyı değiştirir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Çeşitlendirme etkinliği · ölçüt
Aynı kaynağı iki 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 14
Gizlemeyi ölçmek
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Tigress'in öğretim değeri
9. haftada gizlemeyi dört boyutta (güç, dayanıklılık, gizlilik, maliyet) ölçmeyi öğrendik.
Tigress bu ölçümleri somut yapmanızı sağlar: aynı programı gizle, önce/sonra ölç.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Maliyet ölçümü (kolay, zorunlu)
Her hat için ölç ve S9/S15'e yaz:
Ölçüt
Nasıl
İkili boyut
size / ls -l
Çalışma süresi
Aynı girdiyle N kez, ortalama
CFG karmaşıklığı
Tersine derleyicide temel blok sayısı
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Maliyet ölçümü · komut
size ./program_temiz ./program_gizli
Basit ama kanıt üretir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Maliyet · örnek tablo (Hat A ve Hat B)
Hat A: EncodeLiterals + EncodeArithmetic (hafif) · Hat B: Hat A + Flatten + AddOpaque (ağır)
Ölçüt
Temiz
Hat A
Hat B
Boyut
100 KB
103 KB
131 KB
Süre
1.00×
1.05×
1.80×
Blok (hedef fn.)
5
7
40
Hassas dize
3
0
0
Rakamlar örnek; siz kendi ölçtüğünüzü yazarsınız.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Maliyet · ham ölçüm çıktısı
program_temiz:
boyut: 100 KB
işlem süresi: 1.00× (referans)
erisim_ver temel blok: 5
boyut: 103 KB (+%3)
süre: 1.05×
blok: 7
strings hassas dize: 0 (öncesi 3)
boyut: 131 KB (+%31)
süre: 1.80×
blok: 40
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Dayanıklılık ölçümü (ileri, kavram)
Dayanıklılık = otomatik araca (sembolik yürütme) direnç.
hafta: "iddia değil, ölçülen bir nicelik".
Tigress bu araştırmanın merkezinde .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Banescu vd. · Tigress + KLEE
Tigress dönüşümlerinin sembolik yürütmeye ne kadar dayandığını ölçen çalışma. Bulgular:
Tek dönüşüm (yalnız Flatten) → çoğu zaman geri açılır.
Dönüşümleri birleştirmek + durum uzayını büyütmek → çözücüyü üstel zorlar.
Ama maliyet de artar.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Dayanıklılık ↔ maliyet — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Ders için çıkarım
Dayanıklılık ve maliyet ödünleşir (9. haftadaki gibi).
"Güçlü" deme; "şu araca karşı şu boyutta problemi şu sürede çözdürmedi" de.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Ölçüm kuralı (S9/S15)
Bir gizleme kararını ölçüyle savun:
"Flatten + AddOpaque hattı boyutu %30 büyüttü, işlemi 1.8× yavaşlattı; hedef fonksiyonun temel blok sayısı 8 katına çıktı."
Ölçülmemiş gizleme = değerlendiricide (12. hafta) iddia .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Karar
Varlık değeri düşük → Hat A yeter.
Varlık değeri yüksek → Hat B (maliyeti kabul et) + çeşitlendirme.
Karar sayılara dayanır, hisse değil.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Çeşitlendirme ölçümü (örnek)
Hat B'yi tohum 1001 ve 2002 ile üret.
Korunan fonksiyonun bayt farkı: %92 .
Yorum: bir kopyaya yazılan yama diğerinde büyük olasılıkla çalışmaz.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Bölüm 3 — kısa sınama
Tohum çeşitlendirmeyi nasıl sağlar?
Uzayda ve zamanda çeşitlendirme farkı?
Banescu vd.'nin ana kuralı? (dayanıklılık ↔ maliyet)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Bölüm 3 — cevaplar
Aynı kaynağı farklı tohum la gizleyince araç farklı rastgele seçimler yapar → her build farklı ikili (aynı davranış).
Uzayda: farklı kopyalar/kullanıcılar farklı (bir kırık herkesi kırmaz). Zamanda: sürümler arası değişir (kırık kalıcı olmaz).
Daha güçlü gizleme daha çok dayanıklılık ama daha çok maliyet ; koruma varlığın değeriyle orantılı seçilir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
4. Sınıf içi akış (adım adım)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Sınıf içi akış — şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Ne yapacağız?
Kendi küçük, sentetik programınızı:
gizle → davranışı doğrula → karşılaştır → ölç → çeşitlendir → raporla
Adım adım gidelim.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Adım 1 · Hazırlık
Küçük, sentetik bir program yaz (ör. erisim_ver).
Birim testleriyle doğru çalıştığını göster.
Bu senin "temiz" temel çizgin.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Adım 2 · Gizle
tigress --Transform=EncodeLiterals --Transform=EncodeArithmetic \
--Transform=Flatten --Transform=AddOpaque \
--Functions=erisim_ver --out=gizli.c temiz.c
cc -o program_gizli gizli.c
Bir dönüşüm hattı uygula.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Adım 3 · Davranışı doğrula
Aynı birim testlerini gizli sürümde çalıştır.
Sonuç birebir aynı olmalı.
Farklıysa: hat yanlış → düzelt.
Gizleme davranışı asla değiştirmez.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Adım 4 · Karşılaştır
Tersine derleyicide (Ghidra/objdump) temiz ve gizli sürümü aç.
Kontrol akışını karşılaştır.
Temel blok sayısındaki artışı not et.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Adım 5 · Ölç
size ./program_temiz ./program_gizli
Boyut ve süre farkını yaz.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Adım 6 · Çeşitlendir
Aynı hattı iki farklı tohumla çalıştır.
İki ikilinin farklı olduğunu göster (bayt farkı).
tigress --Seed=1001 ... --out=gizli_a.c temiz.c
tigress --Seed=2002 ... --out=gizli_b.c temiz.c
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Adım 7 · Raporla
Bulguları bir tabloya dök:
Dönüşüm
Boyut
Süre
Blok
Tohum farkı
…
…
…
…
…
Bu tablo doğrudan S9/S15 'e girer.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
⚠️ Etik ve güvenli kullanım
Tigress yalnız kendi kodunuza.
Örnek program bilgisayara zarar vermez : sistem ayarı değiştirmez, ağa dokunmaz.
Bütün değerler sentetik .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Sınıf içi · özet akış
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Adım adım akış · neden bu sıra?
Önce davranış (testler) — bozulmadığından emin ol.
Sonra kanıt (CFG, ölçüm) — kazancı göster.
Sonra çeşitlendirme — ölçeklenmeyi kır.
Ölçmeden "güçlü" deme.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Yeni örnek · bütünlük denetimi
int dosya_saglam (const uint8_t *veri, size_t n,
const uint8_t *beklenen) {
uint8_t ozet[32 ];
ozet_hesapla(veri, n, ozet);
return sabit_zamanli_esit(ozet, beklenen, 32 );
}
Sürüm bütünlüğünü denetleyen sentetik bir fonksiyon.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Neden bunu gizleyelim?
Saldırgan bu denetimi bulup atlatmak ister (kurcalanmış dosyayı geçirmek için).
Denetimin dönüş noktası ve karşılaştırması hedef.
hafta: opak boolean + rastgele çıkış burada kritik.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Hat seçimi
tigress \
--Transform=EncodeLiterals \
--Transform=EncodeArithmetic \
--Transform=Flatten \
--Transform=AddOpaque \
--Functions=dosya_saglam \
--out=gizli.c temiz.c
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Adım adım · ne olur?
EncodeLiterals: 32 ve varsa dizgeler düz görünmez.
EncodeArithmetic: karşılaştırma karmaşıklaşır.
Flatten: tek dönüş noktası görünmez.
AddOpaque: sahte dallar; "başarı" dalı tek yerde değil.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Davranış doğrulama (zorunlu)
Doğru özetli dosya → geçer .
Bozuk özetli dosya → reddedilir .
Gizli sürümde de aynı sonuç → hat doğru.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
CFG önce/sonra (kavram)
Denetimin nerede geçtiği/kaldığı akıştan okunmaz.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
⚠️ Sabit zamanlılık korunmalı
sabit_zamanli_esit gizlense de sabit zamanlı kalmalı.
Gizleme uğruna erken çıkış eklenirse yan kanal açılır (3. hafta).
Dönüşümlerin bunu bozmadığını test et .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Ölçüm (örnek)
Ölçüt
Önce
Sonra
Boyut
100 KB
128 KB
Süre
1.0×
1.7×
Blok (dosya_saglam)
4
33
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Çeşitlendirme
İki tohumla üret → iki farklı ikili.
"Bütünlük denetimini atla" yaması bir kopyada işe yarasa bile diğerinde yaramaz.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
İkinci örnek · çıkarım
Bütünlük denetimi gibi atlatma hedefi fonksiyonlarda gizleme değerlidir.
Ama asıl güç: gizleme + RASP (6. hafta) + sunucu denetimi.
Gizleme tek başına atlatmayı geciktirir , engellemez.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Bölüm 4 — kısa sınama
Gizledikten sonra ilk mutlaka yapılacak şey?
Çeşitlendirmeyi nasıl gösterirsin?
Rapor tablosu hangi proje bölümlerine gider?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Bölüm 4 — cevaplar
Davranışın değişmediğini test et (birim testi geçmeli); gizleme işlevi bozmamalı.
İki farklı tohumla üret; ikilileri karşılaştır (hash/boyut/komut farklı ) ama aynı girdi→aynı çıktı (diff/objdump).
S9 (kod sağlamlaştırma) ve S15 (derleme/dağıtım hattı); önce/sonra ölçüm kanıt olarak.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
5. Derleme hattı (S15) ve proje
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Gizleme "en sonda elle" değil
Gizleme, derleme hattının bir adımı olmalı.
Vize sonrası projenizin S15 bölümü tam bunu belgeler.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Derleme hattı · şema
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Hat kuralı 1 · yalnız hassas fonksiyonlar
--Functions ile yalnız hassas fonksiyonları gizle.
Gerekçesini yaz (hangi fonksiyon, neden).
Maliyet kuralı (9. hafta).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Hat kuralı 2 · her sürüm çeşitlendirilir
Her sürüm bir tohumla çeşitlendirilir.
Tohum ve sürüm kimliği kaydedilir .
Zamanda çeşitlendirme (bölüm 3).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Hat kuralı 3 · imzalama gizlemeden sonra
Önce gizle, sonra imzala.
Sürüm kimliği ve özet değerleri (12. haftadaki TOE) tutarlı olsun.
Neden sonra? İmza, dağıtılan son ikiliyi kapsamalı.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Hat kuralı 4 · CI'da otomatik
Hat, sürekli entegrasyonda (CI) çalışır.
Her sürümde: birim testleri + boyut/hız ölçümü otomatik .
Davranış bozulursa yapı durur .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
9, 11, 14 birlikte
9: gizleme kuralları (kod)
11: whitebox (anahtar)
14: otomasyon + çeşitlendirme (bu hafta)
Ortak kural: koruma = gecikme ; güç katmanlardan ve ölçümden.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Proje · S9 ileri + S15 hat — 1
1. Dönüşüm hattı (S9): hangi fonksiyonlar, hangi dönüşümler, hangi sırayla, neden .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Proje · S9 + S15 — 2
2. Ölçüm tablosu: boyut, süre, (varsa) blok sayısı — önce/sonra.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Proje · S9 + S15 — 3
3. Çeşitlendirme: iki tohumla üretim + fark ölçütü; uygulamayacaksanız gerekçe .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Proje · S9 + S15 — 4, 5
4. S15 hattı: gizleme + imzalama + sürüm kimliği adımlarını diyagramla belgele.
5. Davranış kanıtı: gizli sürümün birim testlerini geçtiğini göster (S16 bağı).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Değerlendirici gözüyle
"Çok dönüşüm kullandım" değil .
Her dönüşümün gerekçesi ve ölçüsü .
Ölçülmemiş gizleme = iddia (12. hafta).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Vaka · kurgu
Sentetik bir uygulamada bir lisans denetimi ve bir anahtar türetme fonksiyonu var.
İkisini de mi ağır gizleyeceğiz?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Vaka · karar
Lisans denetimi: orta değer → Hat B (Flatten + AddOpaque).
Anahtar türetme: yüksek değer → Hat B + Virtualize (küçük olduğu için maliyet kabul edilebilir).
Gerisi: gizlenmez (maliyet gereksiz).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Vaka · çeşitlendirme + hat
Her sürüm farklı tohum.
Derleme hattı: gizle → imzala → sürüm kimliği.
CI'da birim testleri + ölçüm otomatik.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Vaka · S9/S15 çıktısı
Fonksiyon
Hat
Boyut/süre
Gerekçe
lisans_dogrula
B
+%31 / 1.8×
orta değer
anahtar_turet
B+Virtualize
+%60 / 3×
yüksek değer, küçük fn.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Vaka · kalan risk
Yeterince kararlı saldırgan tek kopyada çözebilir.
Telafi: çeşitlendirme + kısa ömürlü anahtar + sunucu denetimi.
Açıkça yazılır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Bölüm 5 — kısa sınama
İmzalama neden gizlemeden sonra ?
"Yalnız hassas fonksiyonlar" kuralının gerekçesi?
S15 hattının adımları?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Bölüm 5 — cevaplar
İmza son ikiliyi korur; önce imzalayıp sonra gizlersen ikili değişir → imza geçersiz. Sıra: derle → gizle → imzala .
Bütünü gizlemek performans/boyutu patlatır ve çoğu kod hassas değil; korumayı kritik fonksiyonlara yoğunlaştır → maliyet düşük, etki yüksek.
Kaynak → (statik analiz) → derle → gizle → çeşitlendir (tohum) → paketle/SBOM → imzala → dağıt (hepsi CI'da kayıtlı).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Çözümlü kendini sınama
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Soru 1
Kaynaktan kaynağa gizleme nedir? El ile gizlemeye göre üç avantajı?
Cevap: Araç C kaynağı alıp gizli C kaynağı üretir. Avantajlar: davranışı korur (hataya kapalı), okunur kaynak sizde kalır, tohumla çeşitlendirme kolay.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Soru 2
Tigress'in dersteki yeri; hangi lisans, neden derste dağıtılmaz?
Cevap: 9. hafta kurallarının otomatik hâli. Kâr amacı gütmeyen kullanım ücretsiz, ticari için Arizona lisansı. Kaynak kapalı → ikilisi derste dağıtılmaz; öğrenci resmî siteden indirir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Soru 3
Şu dönüşümleri 9. hafta kurallarıyla eşle: Flatten, EncodeArithmetic, EncodeLiterals, Virtualize, AddOpaque.
Cevap: Flatten→K-04, EncodeArithmetic→K-02, EncodeLiterals→K-07/K-08, Virtualize→K-10, AddOpaque→K-01/K-03.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Soru 4
Bir dönüşüm hattı neden tek dönüşümden güçlü? Sıra neden önemli?
Cevap: Katmanlar birbirini güçlendirir (9. hafta "birlikte"). Sıra sonucu ve başarımı etkiler; kimi sıra gereksiz yavaşlatır ya da zayıf sonuç verir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Soru 5
Her dönüşüm hattından sonra hangi iki şeyi mutlaka yaparsın?
Cevap: (1) Birim testlerini çalıştır (davranış korunmuş mu?), (2) boyut/hız ölç (maliyet).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Soru 6
Virtualize neden yalnız küçük ve kritik fonksiyonlara uygulanır?
Cevap: Maliyeti çok yüksek (onlarca kat yavaşlama, boyut). Getirisi ancak en değerli, küçük fonksiyonlarda maliyeti haklı çıkarır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Soru 7
Tohum (--Seed) çeşitlendirmeyi nasıl sağlar? Uzayda/zamanda fark?
Cevap: Farklı tohum → farklı opak yüklem/sahte dal/durum. Uzayda: farklı kopyalar aynı anda. Zamanda: her sürüm yeni tohum.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Soru 8
Çeşitlendirme gizlemenin gücünü mü, ölçeklenmesini mi engeller?
Cevap: Gücünü artırmaz (bir kopya yine kırılabilir); ölçeklenmesini engeller — bir kırık her yeri açmaz.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Soru 9
Banescu vd. çalışmasının ders için ana kuralı?
Cevap: Dayanıklılık ölçülen bir niceliktir. Dönüşümleri birleştirmek sembolik yürütmeyi üstel zorlar; ama maliyet de artar → dayanıklılık ↔ maliyet ödünleşir .
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Soru 10
Gizlemeyi derleme hattına koyarken imzalama neden gizlemeden sonra?
Cevap: İmza, dağıtılan son ikiliyi kapsamalı. Önce gizlenir, sonra imzalanır; sürüm kimliği/özet tutarlı olur.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Soru 11
S15'te "yalnız hassas fonksiyonlar gizlenir" kuralının gerekçesi?
Cevap: Her fonksiyonu gizlemek programı çok yavaşlatır/şişirir. Maliyeti yalnız değerli fonksiyonlarda üstlenmek mantıklı.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Soru 12
9, 11 ve 14. haftaların ortak kuralını bir cümleyle yaz.
Cevap: Koruma kırılamazlık değil gecikme sağlar; gücü katmanların birleşiminden , çeşitlendirmeden ve ölçülmüş olmaktan gelir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Kapanış · üç hafta
9: gizleme kuralları (el ile)
11: whitebox (anahtar)
14: otomasyon + çeşitlendirme
Hepsi aynı çerçeve: maliyet + katman + ölçüm.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Klasik hatalar — özet
Hata
Nerede işlendi
Her şeyi gizlemek
Bölüm 1 (--Functions), Bölüm 2 (maliyet)
Testsiz gizleme
Bölüm 2 (sıra ve test kuralı)
Ölçmeden "güçlü" demek
Bölüm 3 (ölçüm kuralı)
Çeşitlendirmeyi atlamak
Bölüm 3 (Kural 2)
İmzayı gizlemeden önce yapmak
Bölüm 5 (Hat kuralı 3)
Eski/dağıtılan Tigress kullanmak
Bölüm 1 (lisans)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Terimler sözlüğü
Terim
Anlam
Kaynaktan kaynağa
C girip gizli C çıkaran gizleme
Dönüşüm
Tek gizleme işlemi
Hat
Dönüşümlerin sıralı bütünü
Tohum
Rastgeleliği yöneten sayı (çeşitlendirme)
Sembolik yürütme
Yol-çözen otomatik analiz (KLEE)
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Dönüşüm seçim kılavuzu
İstediğin
Dönüşüm
Dizge/sabit gizle
EncodeLiterals
Hesabı gizle
EncodeArithmetic
Yapıyı gizle
Flatten
Sahte/opak ekle
AddOpaque
Makine kodunu gizle
Virtualize (pahalı)
Çeşitlendir
--Seed, RandomFuns
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Kontrol listesi
[ ] Yalnız hassas fonksiyonlar (--Functions)
[ ] Hat sırası mantıklı (ucuzdan pahalıya)
[ ] Birim testleri geçiyor (davranış)
[ ] Boyut/süre/blok ölçüldü
[ ] İki tohumla çeşitlendirildi
[ ] İmza gizlemeden sonra
[ ] S9/S15'e yazıldı
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Kaynaklar
Tigress resmî sitesi/çalışma sayfaları (tigress.wtf) — dönüşümler, sözdizimi, v4, lisans
Collberg & Nagra, Surreptitious Software — taksonomi, ölçme
Banescu vd. — Tigress + KLEE dayanıklılık ölçümü
Obfuscator-LLVM — derleyici tabanlı alternatif
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Özet: bu haftanın tek cümlesi
Tigress, 9. haftanın gizleme kurallarını otomatik ve çeşitlendirilmiş uygular; ama kural aynı: gizleme
kırılamazlık değil gecikme ; birleştir, çeşitlendir, ölç .
Araç güçlüdür ama karar sizindir : neyi, neden, hangi maliyetle gizliyorsunuz?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 14
Bir sonraki hafta
15. hafta — Final proje gösterimleri (RAP2)
Dönem içeriği tamamlandı. Final raporunda bu haftanın hattı (S15) ve ölçümleri (S9) beklenir. 16. hafta: Quiz-2.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
Konuşma notu: Bu hafta 9. haftadaki gizleme kurallarının otomatik karşılığı Tigress ile kaynaktan kaynağa gizleme ve çeşitlendirme işleniyor. Ana kural: gizleme kırılamazlık vermez, maliyet yükseltir; dönüşümleri birleştir, çeşitlendir, ölç. Tigress yalnız kendi koda uygulanır; ikili derste dağıtılmaz.
Konuşma notu: Bu hafta 9. haftadaki el ile gizleme kurallarını araçla (Tigress) otomatikleştiriyoruz. Ana mesaj aynı: gizleme kırılamazlık vermez, maliyet yükseltir; birleştir, çeşitlendir, ölç.
Konuşma notu: Sonra dönüşüm aileleri.
Konuşma notu: Dönüşüm adları sürümle küçük değişebilir; resmî belgeden doğrulanmalı. Kavramı 9. hafta kurallarına bağlıyoruz.
Konuşma notu: Ara sonrası çeşitlendirme ve ölçme.
Konuşma notu: Sonra sınıf içi akış, S15, proje.
Konuşma notu: Öğrenci Tigress'i kendi indirir, kendi küçük programına uygular. Tümüyle savunma amaçlı; kendi kodunu korur ve ölçer.
Konuşma notu: Sonra derleme hattı (S15) ve proje.
Konuşma notu: Sonra çözümlü kendini sınama.
Konuşma notu: Önce öğrenciye sordurun, sonra cevabı açın.