Bu yazıda Unity ile yapılan bir oyunun Mono build alınması sonucu ortaya çıkabilecek zafiyetler, hacking yöntemlerinden ve güvenlik önlemlerinden bahsedeceğim. Mono build alınan bir oyun güvenlik açısından ciddi manada zayıftır. Kodları dnSpy aracı ile kolaylıkla okunabilir. Mono build herhangi bir şifreleme veya kod içeriği gizlemeden apaçık bir şekilde build alır. Örneğin aşağıda Assembly-Csharp.dll (Assembly Defination'lara göre değişir. Default'ta Assembly-Csharp olarak gelir) dosyasını dnSpy ile açıp rahatlıkla okuyabilirim.
Öncelikle temel olarak yapısından bahsedeyim. Aşağıda gözüken class'lar developer(lar)'ın yazdığı classlardır. Örneğin BirdController ve BirdMovementController bir kuş oyunundaki kuşun hareketini sağlayan classlardır.

Burada yukarı ve aşağı hareket etme fonksiyonlarını görebiliyoruz. Ek olarak hız değişkeni, kuş spriteları gibi değişkenler görüyoruz. Örneğin MoveBottom fonksiyonunun içeriğini okuyalım.

Gördüğünüz gibi yazılan tüm kodlar apaçık gözüküyor. Eğer kuşun pozisyonu -4.3f ten küçük ise return atıyormuş. Yani daha da aşağıya inmiyormuş diyebiliriz. Mono build olduğu için dll i kendimiz kolayca değiştirip derleyebiliriz. Sağ tıklayıp edit method diyerek minimum değeri 5 e getirdim Compile ettim ve şu an dll kaydedildi.

Artık oyun içerisindeki karakterin gidebileceği konumu değiştirdik ve oyunun yapısını bozduk. Daha kritik bir değişiklik de yapabiliriz. Örneğin OnTriggerEnter2D içerisinde Trigger'landığı zaman oyunu kaybettiğimizi görebiliyoruz.

Tekrardan edit method deyip yorum satırına alarak ölümsüzlük yapabiliriz.

Compile edip oyunu çalıştırdığınız zaman asla ölmeyeceğinizi görebilirsiniz.
Mono build kodları apaçık göstermesinden kaynaklı artık tercih edilmeyen build yöntemlerinden birisi haline geldi. Unity'nin 2015 te getirdiği Unity 5 ile IL2CPP olarak geçen, C# kodunu IL'e çevirip ardından C++'a çeviren ve devamında çalıştırıldığı platforma göre makine diline çeviren yeni teknolojisi ile bu sorunu ortadan kaldırdı.
Mono build tarafında alınabilecek pek güvenlik önlemi bulunmuyor. Kodları obfuscate etmek yardımcı olabilir fakat mono build her zaman tehlikeye açıktır. Bir sonraki yazıda IL2CPP avantajlarından, hacking methodlarından ve güvenliğinden bahsedeceğim.