BSP decompile nedir: bir decompile sana gerçekte ne verir
BSP decompile, derlenmiş bir Source haritasını yeniden VMF'ye çevirir. Neler geri gelir, neler kaybolur, anti-decompile koruması gerçekte ne sağlar.
Decompile, BSPSource gibi bir aracın derlenmiş bir BSP dosyasını alıp ondan yeniden, Hammer editöründe açılabilen bir VMF dosyası üretmesi demektir. Ortaya çıkan şey orijinal dosya değil, bir yeniden yapılandırmadır: geometri ve entity'ler büyük ölçüde geri gelir, mapper'ın çalışma düzeni ise gelmez. Motor her BSP'yi okuyabilmek zorunda olduğu için derlenmiş bir harita hiçbir zaman gerçekten gizli değildir.
BSP dosyaları neden decompile edilebilir
BSP mühürlü bir kap değildir. Format yıllardır biliniyor ve motor, haritayı yükleyebilmek için tam da bir decompiler'ın değerlendirdiği verilere ihtiyaç duyar: çarpışma için brush'lar, materyalleriyle birlikte yüzeyler, metin olarak entity'ler. Decompiler bu bölümleri okur ve Hammer'ın anladığı metin formatına geri yazar. Dosyanın nasıl yapılandığını BSP dosyası nedir? yazısı gösteriyor.
Decompile etmenin meşru nedenleri vardır. Mapper'lar bunu VMF'yi kaybettikten sonra kendi projelerini kurtarmak, derlenmiş bir sürümdeki sorunları incelemek ya da yayınlanmış haritalardan bir şeyin nasıl yapıldığını öğrenmek için kullanır.
Bir decompile neleri geri verir
İyi bir decompile şaşırtıcı derecede çok şeyi geri getirir:
- kayıtlı brush verilerinden yeniden oluşturulan world brush'lar
- tüm özellikleriyle, input ve output'larıyla birlikte point entity'ler
- kapılar, trigger'lar ve
func_detailgibi brush entity'ler - displacement'lar, yani biçimlendirilmiş arazi yüzeyleri
prop_staticprop'ları ve overlay'ler- cubemap konumları ve areaportal'lar; areaportal'lar her zaman doğru yerde olmaz
- materyallerin yüzeylere atanması
- normal bir arşiv gibi açılabilen pakfile içeriği
Hammer'da deneyimli biri için bu, bir haritayı değiştirip yeniden derlemeye yetecek bir başlangıç noktasıdır.
Neler eksik kalır ya da yalnızca yaklaşık olur
Yalnızca editöre hizmet eden hiçbir şey BSP'de yer almaz, dolayısıyla geri de gelmez.
| Alan | Decompile sonrası durum |
|---|---|
| VisGroup'lar, gruplar, yorumlar | eksik, BSP'ye hiç yazılmazlar |
| Instance'lar | çözülmüş, tüm içerik doğrudan haritanın içinde durur |
Derleyicinin tamamen tükettiği entity'ler, örneğin func_viscluster | BSPSource readme'sine göre kusursuz biçimde geri getirilemez |
| Brush şekilleri | brush'ların kendisi BSP'de durur, ama karmaşık brush'ların köşe noktaları hatalı gelebilir, bu da geçersiz solid'lere kadar varabilir |
| Clip gibi tool texture'ları | kısmen nodraw ile değiştirilmiş ya da birbirine karışmış |
| Işıklandırma | ışık entity'leri mevcut, lightmap'lerin yeniden hesaplanması gerekir |
| Modellerin ve texture'ların kaynak dosyaları | eksik, pakfile yalnızca derlenmiş sürümleri içerir |
Pratikte bu, sonradan uğraşmak demektir. Yeniden oluşturulan brush'lar tekrar derlendiğinde leak'lere ya da geçersiz solid'lere yol açabilir, grupları ve VisGroup'ları olmayan büyük bir haritada yön bulmak da zordur. Bir decompile nadiren bitmiş bir çalışma dosyasıdır ama çoğu zaman işe yarar bir başlangıçtır.
Derlenmiş bir harita neden asla gizli değildir
Üç gerçek değiştirilemez:
- Bir sunucuya katılan her oyuncu harita dosyasını alır.
- Motor dosyayı eksiksiz okuyabilmek zorundadır.
- Motorun okuyabildiği her şeyi, prensipte başka bir program da okuyabilir.
Yani bir haritayı korumak istiyorsan gizliliğe güvenme. Gerçekçi hedefler, yeniden yapılandırma için daha fazla emek gerekmesi ve bir kopyanın nereden geldiğinin kanıtlanabilmesidir.
Anti-decompile önlemleri gerçekte ne sağlar
Anti-decompile önlemleri iki noktada etki eder. Birincisi, motorun ihtiyaç duymadığı ama bir editörün işine yarayacak bilgileri kaldırırlar, örneğin editör ID'lerini ya da pakfile içinde kalmış kaynak dosyaları. İkincisi, dosyanın nasıl temsil edildiğini değiştirirler. Böylece otomatik yeniden yapılandırma daha az güvenilir çalışır ve daha fazla elle çalışma gerektirir.
| Beklenti | Gerçek |
|---|---|
| Artık kimse haritamı açamaz | Motor onu okumak zorunda, dolayısıyla prensipte analiz edilebilir kalır |
| Bundan sonra decompile mümkün değil | Daha zahmetli hale gelir ve daha kötü sonuç verir |
| Koruma sonsuza kadar dayanır | Decompiler'lar gelişmeye devam eder, koruma yöntemleri de öyle |
| Anti-decompile kopya korumasının yerini tutar | Dosya hâlâ değiştirilmeden kopyalanabilir |
Son nokta sık sık gözden kaçar: Obfuscation uygulanmış bir harita, kopyalandığı her sunucuda çalışır. Anti-decompile, emeğini rahatça yeniden düzenlenmekten korur, başkasına verilmekten değil. Bunun için başka araçlar gerekir. Onlar GMod haritanı sızıntılardan koru yazısında anlatılıyor.
İşin öbür yüzü de önemlidir. BSP'de yapılan hiçbir değişiklik haritaya zarar vermemelidir. Ciddi yöntemler çıktıyı yeniden doğrular ve bu kontrolden geçemeyen bir dosyayı teslim etmez.
bspmarket.de kendi BSP Protection'ı için bunu bilinçli olarak temkinli ifade eder: anti-decompile katmanı tipik decompile çıktısının kullanılmasını zorlaştırır, Source BSP dosyalarında decompile'a karşı eksiksiz bir koruma ise garanti edilemez. Her seviyenin ne yaptığı BSP Protection sayfasında ve BSP Obfuscation nedir yazısında listeleniyor. Decompile hiçbir zaman tamamen dışlanamayacağı için Fingerprint mantıklı bir tamamlayıcıdır: kopyanın kendisi engellenemese de onu izlenebilir kılar.
Teknik olarak mümkün olması, izinli olduğu anlamına gelmez
Bir haritanın decompile edilebilmesi, sonucu kullanıp kullanamayacağın konusunda hiçbir şey söylemez. Yazarının kendi yaratıcı kararlarını yansıtan bir harita onun eseri olarak korunur ve decompile etmek bunu değiştirmez. Başkalarının haritalarını değiştiren, yeniden yayınlayan ya da satan kişi kural olarak yazarın iznine ihtiyaç duyar. GMod haritalarında telif hakkının temelleri yazısı, hukuki danışmanlık niteliği taşımayan bir genel bakış sunar.
Sık sorulan sorular
Her BSP dosyası decompile edilebilir mi?
Prensipte her Source BSP analiz edilebilir, çünkü motor onu okumak zorundadır. Sonucun ne kadar kullanılabilir olduğu haritaya, decompiler'a ve varsa uygulanmış korumaya bağlıdır.
Decompile, kaybettiğim VMF'yi bana geri verir mi?
Yalnızca bir yeniden yapılandırma olarak. Geometri ve entity'ler büyük ölçüde geri gelir, gruplar, VisGroup'lar ve instance'lar ise gelmez. VMF'nin düzenli yedeğini almak daha iyi yoldur.
Obfuscation decompile etmeyi engeller mi?
Hayır. Tipik decompile denemelerini zorlaştırır ve işe yarar editör bilgisini azaltır. Decompile ihtimali dışlanamaz.
Fingerprint bir decompile'dan sonra da kalır mı?
Bu, yönteme ve ne kadar şeyin değiştirildiğine bağlıdır. Birden fazla bağımsız sinyale dayanan yöntemler tek tek değişikliklere karşı daha dayanıklıdır. Bunun garantisi yoktur.