Koruma ilkeleri
Değerli yazılım için net bir standart: işe yarar çözümlemenin maliyetini artırmak, ürünün kalitesini korumak.
Değeri koruyun, hedefi belirleyin#
Koruma politikası, kaybı zarar doğuracak varlıkları belirlemekle başlar: özgün bir algoritma, iş kuralı, lisans kararı veya henüz yayımlanmamış bir özelliğin sağladığı avantaj. Bu varlıkların tümü aynı işlemi gerektirmez. Profil seçmeden önce hassas metotları ve gizliliklerinin önem taşıdığı süreyi belirleyin.
Amaç, işe yarar bir yeniden çözümleme için gereken çabayı artırırken maruz kaldığınız riski sınırlamaktır. İdeal durumda saldırının maliyeti beklenen getirisini aşar. Bu, tehdit modelinin hedefidir; garanti edilen ekonomik bir sonuç değildir. Saldırganın kaynakları, motivasyonu ve erişimi değişebilir.
Dağıtılan dosyanın incelenebileceğini varsayın#
Saldırgan korumalı JAR’a sahip olabilir, sürümleri karşılaştırabilir, bytecode inceleyebilir, hata ayıklayıcı bağlayabilir veya kontrol ettiği süreci gözlemleyebilir. Sanallaştırma yürütme temsilini değiştirir; native derleme seçili mantığı sıradan JVM metot gövdelerinin dışına taşır. Hiçbiri çalışma zamanı davranışının incelenmesini imkânsız kılmaz.
Analizi tek bir tekniğe bağımlı bırakmayın#
Farklı katmanlar farklı kısayolları hedefler. Yeniden adlandırma anlamsal ipuçlarını azaltır. Sabit koruması, değerlerin temsilini ve geri elde edilmesini değiştirir. Kontrol akışı dönüşümleri doğrudan yeniden çözümlemeyi zorlaştırır. Seçici sanallaştırma veya native derleme, önemli metotların temsilini daha kapsamlı değiştirebilir. Değerleri, her seçeneğin her yere uygulanmasından değil, uygun birleşimden doğar.
Rolünü incelemek için bir aşama seçin. Şema, iç uygulama ayrıntılarını değil, sorumlulukları gösterir.
Koruma politikası, kaybı zarar doğuracak varlıkları belirlemekle başlar: özgün bir algoritma, iş kuralı, lisans kararı veya henüz yayımlanmamış bir özelliğin sağladığı avantaj. Bu varlıkların tümü aynı işlemi gerektirmez. Profil seçmeden önce hassas metotları ve gizliliklerinin önem taşıdığı süreyi belirleyin.
Saldırgan korumalı JAR’a sahip olabilir, sürümleri karşılaştırabilir, bytecode inceleyebilir, hata ayıklayıcı bağlayabilir veya kontrol ettiği süreci gözlemleyebilir. Sanallaştırma yürütme temsilini değiştirir; native derleme seçili mantığı sıradan JVM metot gövdelerinin dışına taşır. Hiçbiri çalışma zamanı davranışının incelenmesini imkânsız kılmaz.
Farklı katmanlar farklı kısayolları hedefler. Yeniden adlandırma anlamsal ipuçlarını azaltır. Sabit koruması, değerlerin temsilini ve geri elde edilmesini değiştirir. Kontrol akışı dönüşümleri doğrudan yeniden çözümlemeyi zorlaştırır. Seçici sanallaştırma veya native derleme, önemli metotların temsilini daha kapsamlı değiştirebilir. Değerleri, her seçeneğin her yere uygulanmasından değil, uygun birleşimden doğar.
Decompiler ekran görüntüsü, tek bir araçtan elde edilen gözlemdir. Her analiste karşı dayanıklılığı veya çalışma zamanı doğruluğunu kanıtlamaz. Tam olarak yayımlayacağınız korumalı derlemeyi değerlendirin: davranışı orijinalle karşılaştırın, temsilî hassas metotları inceleyin, başlangıç ve kararlı durum maliyetini ölçün, profil ile derleme kimliğini saklayın. Bağımlılıklar, JVM hedefi veya koruma politikası değiştiğinde incelemeyi tekrarlayın.
Yayımlanan dosyayı değerlendirin#
Decompiler ekran görüntüsü, tek bir araçtan elde edilen gözlemdir. Her analiste karşı dayanıklılığı veya çalışma zamanı doğruluğunu kanıtlamaz. Tam olarak yayımlayacağınız korumalı derlemeyi değerlendirin: davranışı orijinalle karşılaştırın, temsilî hassas metotları inceleyin, başlangıç ve kararlı durum maliyetini ölçün, profil ile derleme kimliğini saklayın. Bağımlılıklar, JVM hedefi veya koruma politikası değiştiğinde incelemeyi tekrarlayın.