Güvenli Programlama ve Yazılım Geliştirme
1. Tigress Çeşitlilik (Diversity)
Teorik Açıklama: Tigress, bir programı farklı şekillerde dönüştürerek, saldırılara karşı dirençli hale getiren güçlü bir obfuscation aracıdır. Bir programın her çıktısı benzersiz bir yorumlayıcı (interpreter) oluşturur. Bu, programın davranışını rastgeleleştirir ve analiz edilmesini zorlaştırır.
- Tigress’te Kullanılan Yöntemler:
- Instruction Dispatch Türleri:
- Switch, direkt, endirekt, çağrı (call), if-else, lineer, binary, interpolasyon.
- Operand Türleri:
- Yığın (stack), registerlar.
- Rastgeleleştirilen Operatörler:
- Farklı operandlar ve operator kombinasyonları kullanarak kodun karmaşıklaştırılması.
- Çeşitli Dönüşümler:
- Code Flattening: Programın akış kontrolünün düzleştirilmesi.
- Merge/Split Fonksiyonlar: Birleştirilen ya da bölünen fonksiyonlar.
- Opaque Predicates: Kodda gizli ve değiştirilemeyen koşul ifadeleri ekleme.
Uygulama Örneği:
tigress --Transform=Virtualize --Functions=fib --VirtualizeDispatch=switch --out=v1.c test1.c
gcc -o v1 v1.c