Reverse Engineering'e karşı alınabilecek önlemler (Yazılım koruma teknikleri)



Programı register etme ve kontrol safhalarına gelirsek.Program register edildiğinde “Programınız register edildi” yada “Hatalı seri numara” vs gibi mesaj pencerelerini kullanmanız crackererın işini kolaylaştırmaktan başka birşey yapmaz.Direk oraya konumlanılır ve zıplama noktalarına gözatılır.Seri numara ve kullanıcının girdiği karşılaştırılır ve program register edilsinmi yoksa hata penceresimi çıksın karar verilir.Burada seri numara girildiğinde hata mesajı verilmemesi doğru olacaktır.Programın sessiz sedasız register olması en doğru seçim olacaktır.Fakat bazı şifreleme algoritmaları ile “Programınız register edildi” stringini şifreleyip farklı değişkenlere kelime kelime atıp program register edildiğinde onları birleştirip ve string değerini çözüp gösterebilirsiniz.

Seri numaranın doğru olup olmadığını kontrol ettiğimiz yerler çok önemlidir.Seri numarayı hesaplatırken  fonksiyonlara ayırarak uzun ve karışık matematik işlemlerinden geçirerek farklı değişkenlere parça parça ayrılmış olarak oluşturmak doğru olacaktır.Fakat değişkenlerin adreslerinin sıralı olmaması için pointerlardan yararlanmamız veya araya farklı değişkenler sokmamız doğru olacaktır.Örneğin sn1 değişkeni ,başka işlemde kullandığımız değişlen,sn2 değişkeni.Bunların memoryde yanyana gelmemesine özen gösterin.Bu değişkenlerdeki değerleri  işlemlerden geçirerek toplayarak çıkartarak vs farklı değerlere sokmamız tanınmaması açından önemlidir.Seri numara hesaplandıktan sonra  aynı şekilde kullanıcının girdiği seri numarayı şifreleyerek ve parçalara ayırarak farklı değişkenlere attıktan sonra bunları karışık bir algoritma içerinde önce sondaki değeri sonra baştaki değeri vs karşılaştırıp çıkan sonuca göre register olup olmayacağına karar vermeliyiz.

Birde crackerı şaşırtmaca yoluna gidebiliriz.Örneğin sahte bir register olma bloğu yaratıp programın asıl register olma bölümüne gelmeden önce çalıştırıp buraya aslında geçerliliği olmayan kod bloğu yerleştirip orayla vakit harcamasını sağlayabiliriz.Hata mesajını atlayınca karşısına “Seri numaranız doğrudur çıkan referans numaranızı sitemizde girerek(random numara sallıyoruz J)  gerekli dosyaları indirmeniz gerekmektedir” gibi crackerı aslında programın eksik olup bazı şeyleri indirmesi gerektiğini inandırarak püskürtmektir.Yada o bölümün aslında geçerliliği olmadığı (ilk olarak sahte bir register olma bloğu oluşturacağımızdan bahsetmiştim) ve crackerın register edilen nokta orası sanarak progam akışını oraya yönlendirmesi ve bizim programın gerekli bazı dlllerini sildirerek kullanılmaz hale getirmemiz,pcye reset attırmamız gibi şeylerde olabilir.Normal bir kullanıcıda o nokta atlanacağı için sorun oluşturmayacaktır.

Bütün bunları yaptıktan sonra bir packer,protector ile hem programın boyutunu küçültmemiz,hemde korumamız mutlaka gerekli.Packerlar dosyaların boyutunu küçültme üzerine çalışırlar.Dosyayı korumayla ilgili ileri düzey yöntemlere başvurmazlar.Fakat tecrübesiz crackerları püskürtmede başarılı olabilirler.Protector ise programın boyutunu küçültmekten çok programın kırılmamasına yönelik ileri düzey yöntemler uygularlar.Programın debugger ile çalıştırılıp çalıştırılmaması,sonradan eklenen kodların tespiti,apilerin yönlendirilmesi ,import tablela oynanması,harici bir programla loaderlarla belleğe erişilip erişilmediğinin kontrolü,verilerin şifrelenmesi,self-modifying ve daha birçok teknikle dosya korunma altına alınır.

Fakat zamanla packer,protectorun kullandığı tekniklerin çözülmesiyle olay unpacker programlarının yazılmasına bile kadar gider.Yüzlerce dolar para verdiğiniz protector saniyeler içerisinde bir unpacker ile korumasız bırakılır.Daha sonrasıda sizin programınızı ne kadar koruduğunuza kaldır.Sırf packer,protectorlara güvenmeden kendi önlememizide sıkı bir şekilde almalıyız.Aksi takdirde bütün harcağımız zaman,emek vs herşeyi uçup gider.Kırılamayacak program yoktur.Fakat tecrübesiz crackerları püskürtmemiz bile bizim için yeterlidir.Programımız dünya çapında birşey değilse tecrübeli adamların olduğu büyük cracker teamlerin eline ulaşmayacaktır zaten.Hele assembly ile kendi programımızda debugger ile yaptığımız özel koruma teknikleriyle dahada sağlam bir hal alır.Kullandığımız packer,protector aspack vs gibi yaygın birşeyse kırılma sürecide hızlanır.Çünkü bunlar genel olarak birçok programda kullanıldığı için sistem tamamiyle çözülmüş unpackerına kadar herşeyi yazılmıştır.Fazla adını duyurmamış fakat kaliteli olan packer,protectorleri tercih edelim..
Tarih:
Hit: 4024
Yazar: anonim6918524

Taglar: reverse engineering'e karşı alınabilecek önlemler yazılım koruma teknikleri


Yorumlar


Siftahı yapan siz olun
Yorum yapabilmek için üye girişi yapmalısınız.