Bunu düşünürken, birkaç farklı gizleme türü vardır. Tam bir zaman kaybı olan kaynak kodunun gizlenmesiyle başlayalım; Onsuz anlamak yeterince zor! Bunun yerine, teslimat paketinin gizlenmesine, kodun kullanıcıya nasıl teslim edildiğine odaklanalım.
Küçük gizleme
Sıradan kullanıcının parmaklarını içeri sokmasını ve bir şeyleri kolayca kırmasını önlemek için küçük bir gizleme vardır. Kararlı bir hacker'ı dışarıda tutmaz, ancak desteklemeniz istenen şeylerin gerçekte sunduğunuz şey olduğundan emin olmanıza yardımcı olur. Bu tür şeyler için gereken koruma seviyesi gerçekten oldukça düşüktür; teslimat paketi sadece okunabilir ve düzenlenebilir görünmemelidir (uzman araçlar olmadan) ve bu yeterince iyi.
Javascript minimizasyonu buna bir örnektir, ancak bu şekilde pazarlanmamıştır. Doğru akıllarında olan hiç kimse, yeterince kararlı / kalıcı olsanız bile teknik olarak mümkün olsa bile, küçültülmüş bir JS dosyasını okumak ve düzenlemek istemez.
Benzer şekilde Java uygulamalarının sunulmasıyla. Kodu sadece yürütülebilir bir JAR'a paketlemek, bir şehir parkındaki kibar bir “Lütfen Çimen Tutun” işaretinin tüm gücüne sahip olmasına rağmen aptallığın çoğunu durduracaktır.
C ++ kodu teslim edilirken bile, gereksiz sembollerin yürütülebilir dosyadan çıkarılması küçük gizleme olarak nitelendirilmek için yeterli olacaktır. Anahtar, sonucu bir kullanıcı olarak okumak gariptir , ancak bir bilgisayar olarak yürütmek için bir sorun değildir.
Majör şaşkınlık
Büyük gizlilik kararlı ve bilgili kullanıcıyı dışarıda tutmaktır . Aynı zamanda bir toplam kaybetme oyunu; bir bilgisayar onu çalıştırabilirse, bir kişi onu parçalara ayırabilir ve ne yaptığını çözebilir. Size en yakın programın sürekli olarak şifresini çözmek ve bir seferde yaptığı şeyi başka bir zamanda yaptığı tamamen farklı bir şeye dönüştürmek olacaktır. Böyle bir şey oluşturmak oldukça zor olurdu ve yine de gerçekten iyi bir hacker'ı dışarıda tutmayacaktı (yine de, tüm bu kendini değiştiren kodun şifresini çözmek için gereken çaba miktarıyla sonuna kadar gerçekten çapraz olacaklar).
Diğer çözümler açısından düşünmek daha iyidir. Örneğin, kodun “taç mücevherlerini” kontrol ettiğiniz sunucularda tutabilir ve yalnızca servis çağrılarına izin verebilir, bu da müşteriyi değerli parçaların ön ucu olan ücretsiz bir hediye haline getirebilirsiniz. Ya da daha fazla sözleşme / yasal rotaya gidebilir ve yürütülebilir kodları yalnızca kodunuzun içinde poke etmemeyi resmi olarak kabul eden veya bunu yaparlarsa sizi telafi etmeyi kabul eden kuruluşlara devredebilirsiniz (bu, bir çeşit NDA olacaktır). Amaç, bilgisayar korsanının bilgisayar korsanlığı yapmaması ve kullanıcıların kodu sözleşmeye bağlı olmayan bilgisayar korsanlarından uzak tutması için güçlü bir teşvik yaratmak olacaktır.
Ancak kodunuzun asla kırılamayacağını varsaymamalısınız. Sanallaştırma ile, bir yürütmenin herhangi bir program durumu incelenebilir ve izlenebilir ve bunu yenmeye çalışan herhangi bir şey (örneğin, harici bir zaman kaynağına saat takibi) yasal kullanıcılarda bilgisayar korsanlarına göre sorunlara neden olma olasılığı daha yüksektir. ( Kod, rakiplerinin eline geçtiğinde, çok kararlı bilgi yayıncılarının bile sistemlerini nasıl güvende tutamayacakları için DRM'nin geçmişine bakın .) Aslında yasal kullanıcıları mutlu etmeye odaklanmak çok daha iyi. Ara sıra meydana gelen çatlaklardan kaynaklanan kayıplar, tatmin edici müşteriler aracılığıyla getirilen ekstra paraya kıyasla hiçbir şey olmayacaktır.