Tersine Mühendislik Engelleme ve İkili Kod Gizleme (Binary Obfuscation) Teknikleri
Zararlı yazılımların ve telif hakkı korumalı uygulamaların analiz edilmesini zorlaştıran gelişmiş kod karartma ve sanallaştırma teknikleri.
Tersine Mühendislik Engelleme ve İkili Kod Gizleme
Özellik ne işe yarar?
Yazılım üreticileri fikri mülkiyetlerini (IP) korumak, oyun geliştiricileri hileleri engellemek, güvenlik araştırmacıları ise zararlı yazılımları analiz etmek için Tersine Mühendislik (Reverse Engineering) tekniklerine başvururlar. Saldırganlar IDA Pro, Ghidra veya x64dbg gibi hata ayıklayıcı (debugger) ve dekompile araçlarıyla derlenmiş ikili dosyaları (EXE, DLL, ELF) açarak kaynak kodu neredeyse orijinal haline getirebilirler. İkili Kod Gizleme (Binary Obfuscation), derlenmiş makine kodunun işlevselliğini ve çıktısını kesinlikle bozmadan, tersine mühendislik araçlarının ve analistlerin kodu anlamasını matematiksel olarak imkansız hale getirme işlemidir. Bu teknoloji, denetim akışını karmaşıklaştırır (Control Flow Flattening), ölü kodlar (junk code) ekler, sabit string ifadelerini şifreler ve uygulamanın kendi içinde küçük bir sanal makine (Control Flow Virtualization) çalıştırarak kodun klasik dekompile araçlarında açılmasını engeller.
Nasıl uygulanır?
Kod karartma işlemleri doğrudan derleme aşamasında (LLVM tabanlı araçlarla – OLLVM) veya derleme sonrasında (Post-processing araçlarıyla – VMProtect, Themida) uygulanır. LLVM tabanlı derleyici seviyesinde gizleme uygulamak için özel geçişler (passes) tanımlanır. Bu adımlarda fonksiyon isimleri anlamsız sembollerle değiştirilir (symbol stripping), IF-ELSE blokları karmaşık matris denklemlerine dönüştürülür ve bellek adresi üzerindeki kontrol akışları rastgele sıçramalarla (indirect jumps) karartılır. Ayrıca uygulamanın çalışma zamanında (runtime) bir hata ayıklayıcı (debugger) altında çalışıp çalışmadığını kontrol eden Anti-Debugging ve Anti-VM kod blokları uygulamanın giriş noktasına (Entry Point) yerleştirilir.
İyi sonuç için ipuçları
Tüm uygulamayı ağır sanallaştırma ve karartma algoritmalarıyla kaplamak işlemci yükünü artırabilir ve uygulamanın çalışma performansını %30-50 oranında düşürebilir. Bu nedenle karartma işlemini uygulamanın tamamına değil, sadece lisans doğrulama, şifreleme anahtar yönetimi ve kritik algoritma bloklarına uygulayın. Şifrelenmiş string ifadelerini belleğe sadece kullanılacağı milisaniyede çıkarıp işlem biter bitmez bellekten güvenle silen (zeroing) dinamik çözücüler kullanın.
Dikkat edilmesi gerekenler
Aşırı düzeyde uygulanan kod karartma teknikleri, antivirüs ve EDR (Endpoint Detection and Response) yazılımlarının uygulamanızı \’şüpheli / zararlı yazılım\’ (heuristic detection) olarak işaretlemesine neden olabilir. Uygulama ikili dosyalarınızı dağıtmadan önce kod imzalama (Code Signing) sertifikaları ile dijital olarak doğrulayın ve antivirüs laboratuvarlarına önceden bildirim yapın.
Görüşünüz bize yol gösterir.
Tek dokunuşla değerlendirin. Kişisel bilgi toplanmaz.