folder Tahribat.com Forumları
linefolder Assembly - Reverse Engineering
linefolder Reverse Engineering"E Karşı Alınabilecek Önlemler(Yazılım Koruma Teknikleri)



Reverse Engineering"E Karşı Alınabilecek Önlemler(Yazılım Koruma Teknikleri)

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    inside
    anonim6918524
    anonim6918524's avatar
    Banlanmış Üye
    Bilgi/Destek Madalyası Üstün Hizmet Madalyası
    Kayıt Tarihi: 16/Temmuz/2005
    Erkek

    Genelde yazılımların kırılmasıyla ilgili şeyleri anlatıyorum.Bu seferde korunmasıyla ilgili bir döküman yazmak istedim J

    Programcıların gece ve gündüz günlerce çalışarak elde ettikleri  sonucun meyvesini  yemek  istemesi normal.Fakat bazı programlara konulan uçuk fiyatlar ekonominin kötü olduğu ülkelerde korsan kullanıma itiyor ve yüzlerce siteye onbinlerce cracker sürekli bunları kırarak ekliyor.İş kontrolden çıkınca büyük maddi kayıplara sebep oluyor ve bu da programcının hakkını yemek oluyor malesef.

    Bu sefer olaya programcıların açısından bakarak ne gibi önlemler teknikler alabileceğimle ilgili bazı ipuçları vereceğim.Benim şahsi düşüncem ücretli bir yazılım yazsam her ihtimale karşı onu trial olarak paylaşmam.Çünkü alınan her türlü önleme rağmen hala programlar kırılmaya devam etmekte ve uğrunda yüzlerce dolar saçılan koruma programları tekniğinin çözülmesiyle dakikalar içerisinde kırılır hale gelmiştir.En iyi koruma yöntemi debugger ile açıp kendi programımızın assembly kodları üzerinde kilit noktalarda crackerı şaşırtıcı değişiklikler yapmaktır.Fakat assembly bilmeyen programcılar içinde güzel yöntemler mevcuttur.

    Yukarıda ücretli yazılımların deneme amaçlı olarakta dağıtılmamasının güvenlik açısından iyi olacağından bahsetmiştim.Fakat programınız çok mükemmel birşey değilse birçok kişinin haberi olmayacak ve reklam yapmadığınız için zarara uğraşayacaksınız.Bu yüzdende bazı durumlarda deneme amaçlı programlar dağıtmak zorundayız.Öncelikle dilleri kıyaslarsak bir programı debugger ile açtığımızda yer tespiti açısından en güvenli visual basic daha sonra delphi en güvensiz olanıda c++dır.Sebebi  visual basic gibi dillerin dlllerden bolca yararlanmasıdır.Fakat bu durum geliştirilen bazı araçlarla tersine dönmüştür.Visual Basic için “Visual Basic Decompiler” ve Delphi için “DeDe” geliştirilen yazılımlar başı çekmektedir.Bunlarla kısa bir incelemeden sonra kilit noktaların adreslerini alarak gerekli düzenlemeleri debugger vasıtasıyla yapmamız mümkündür.

    Öncelikle programı yazdığımız dille yapabileceğimiz birkaç şaşırtma ve korunma yönteminden bahsedelim.Örneğin programı deneme amaçlı dağıtmak istiyoruz.Fakat program kısıtlı olarak kullandıracağız.Örneğin dosyayı açma var.Fakat kaydetme yok diyelim.Burada programın kısıtlamak istediğimiz fonksiyonlarının kodlarını çıkartarak derlemek en iyisi olacaktır.Birçok programda bu hataya rastladım.Adam programında kısıtlı sürüm olup olmadığıyla ilgili değişken koyup yaptığı karşılaştırmalar sonucu mesaj penceresi çıkacağı yada fonksiyona devam edeceğini belirlemiş.Fakat program tamamen trial olarak geçiyor yani register edilemez.Bu da programcının dünyadan bir haber olduğunu gösteriyor.Nag screenlere(beni satın alın diye programın başında çıkan mesaj pencerelerine) gelirsek.Bunları tek çatı altında toplamak uzun fakat iyi bir yöntem olacaktır.Örneğin programın ana formu ile nag screen ortak olsun.Formun üstündeki bileşenlerin yerleri ve konumları ,üstlerindeki yazılar nag screendeki devam et butonuna basınca ayarlansın ve ana form görünümüne girilsin.Ana form ve nag screen’i ortak yapmamız crackerın nag screen’i atlarsa ana formuda atlaması ve programın açılmayacağı anlamına geliyor.Nag screenden forma geçişte yapılan işlemlerin matematiksel olarak ve ayrı ayrı prosedürlere dağıtılarak çağrılar yapılarak gerçekleştirilmesi daha doğru olacaktır.

    Eğer programı register edilebilir şekilde dağıtmak istiyorsak en mantıklısı işlemlerimizi internet üzerinden ve harici dosyalar vasıtasıyla yapmak olacaktır.Register edilmemiş programın kısıtlı fonksiyonlar içeren bir dllsi bulunması (Program full olduğunda çalışacak fonksiyonlar eklenmeden derlenmiş) ve register edildiğinde bu dllyi indirerek  programın full olarak devam etmesini uygulayabiliriz.Fakat sitenin çökmesi,sürekli hizmet verme zorunluluğu gibi şeyleri gözönüne alırsak öbür yöntemi uygulamak zorundada kalabiliriz.Yani programın tamamını dağıtmak fakat trial olunca çeşitli değişkenlerle kullanılabilir fonksiyonları atlamak gibi.Program register olup olmadığını açıldığında registyden yada bir dosyadan kontrol eder ve ona göre yoluna devam eder.Programın trial olup olmadığını registrye kaydetmek fazla güvenli değildir.Çünkü registry okuma,yazma apileri aranarak kolayca bulunabilir.Onun yerine bir dosya içerine(bu şaşırtıcı bir dosyada olabilir sistem dosyası gibi yada gereksiz bir dosya gibi temp vs isimler verilerek) binary şeklinde verileri kaydetmek ve her seferinde içerisindeki değerleri okuyarak serial numberı hesaplatıp onay vermektir.Fakat bu bir noktada yapılırsa oranın cracker tarafından modifiye edilmesiyle program register edilmiş olur.Bunun için programın çeşitli noktalarında seri numara tekrar tekrar hesaplanarak kontrol edilmelidir.Örneğin programın başında kullanıcı adı,serial numberı dosyadan okumuştuk.Bunları bir değişkene atıp daha sonradan ele alıp çeşitli noktalarda hesaplatırız.Eğer cracker dosya bölümünü atlayıp sadece onay vermişse işe yaramayacaktır bu aldığımız önlemle.

    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.

    Aspack:  En fazla kullanılan packerlardan birisi.Herkesin elinin altından geçtiği için bir unpacker ile son sürümlerini açmak saniyeler almıyor.Packer olduğu için koruma sistemide fazla gelişmemiş.

    Asprotect: Bu da programı sıkıştırmaktan çok korumaya yönelik geliştirilmiş.Register edilmiş versiyonu daha sağlam çünkü register edilmemiş protector kullanırsınız dosyaya unregistered vs imza bırakıyorlar ve crackerın protectoru tanıması kolaylaşıyor.Yaygın olduğu için bununda unpack edilmesi unpackerlar ve tutoriallar vasıtasıyla kolay.

    AsprotectSKE: Asprotectin gelişmişi aspprotect apilerini kullanmanıza ve crackerın işinin dahada zorlaşmasını sağlıyor.Programa siz uğraşmadan register edilip edilmediğini kontrol eden fonksiyonlar ekliyor.Fakat bu da genel olmasından dolayı nasibini alıyor.

    PECompact: Çok kaliteli bir packer ve protector.Kırılması diğerlerine oranla daha zor ve henüz ortalık malı olmamış.Paralı fakat ücretsiz indirip kullanabileceğiniz öğrenci sürümüde mevcut.

    UPX: Bu daha çok sıkıştırmaya yönelik ücretsiz bir yazılım.UPX’in koruma sistemi fazla gelişmiş değil ve PE Headerda değişiklik yapmazsanız.Bir başkası UPX indirip kolayca unpack edebilir.

    Molebox: Piyasada fazla yer alamamış dosyayı kısmen koruyan.Tecrübesiz crackerları püskürtmede işe yarayan fazla kaliteli olmayan bir packer.

    Fsg: Kaliteli bir packer.Dosyayıda yeterince koruyor.Fazla yaygın olmamasıda bir avantaj unpack edilmesi açısından

    Mew:Ücretsiz sıkıştırma,korumayı sağlayan programlardan birisi fazla yaygın olmaması avantaj sağlıyor.

    Morphine: PE Headerı şifreleyebilmenizi sağlayan faydalı,ücretsiz bir program.

    Programınızı debugger ile açarak kendi eliniz ile korumanız en iyisi olacaktır.Fakat assembly bilmesenizde üstteki yöntemlerlede etkili sonuçlar elde edebilirsiniz.Bu döküman FireX tarafından yazılmıştır.Lütfen kopyalarken emeğe saygı duyunuz.Saygılarımla..

    -anonimleştirildi-


    λ
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Draeex
    Draeex's avatar
    Kayıt Tarihi: 04/Nisan/2006
    Erkek

    Sağol abü güzel döküman olmuş.

     


    Tariqat Of Tahribat The Murid Draeex Tariqat Dj"i 2007©
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ByALeX
    ByALeX's avatar
    Kayıt Tarihi: 24/Ağustos/2005
    Erkek
    Eyw Emeğine SağLık, Daha Okumadım Pcye Çektim Gece Okurum

    Alim ile Sohbet Etmek Zümrüt ile incidir, Cahil ile Sohbet Etme Günde Bin Can incitir. Alim ile Sohbet Etmek Mertebe, Cahil ile Sohbet Etme Dönersin Merkebe, Eşek Alim Olmaz Kitap Taşımakla Tekkeye, insan da Hacı Olmaz Gitmekle Mekkeye.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    decameron
    decameron's avatar
    Üstün Hizmet Madalyası Bilgi/Destek Madalyası Savaş Madalyası
    Kayıt Tarihi: 29/Haziran/2003
    Erkek
    Eline sağlık Firex , güzel paylaşım, yanlız bu tür uzun dökümanlarınızı iletirseniz Döküman arşivive ekleriz hem forumda kaybolup gitmez , hem konu sürekli ulaşılabilecek yerde kalır http://tahribat.com/doc.asp?docid=117 gibi

    Etinden korkanın kemiğini sikeyim!
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AntiOksidan
    AntiOksidan's avatar
    Kayıt Tarihi: 03/Ekim/2005
    Erkek
    eyv hoja çok güzel yazı.hiç bir bilgisi olmayan biri bile birşeyler öğrenebilir.tabi okursa =)
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Dark_Lord
    Dark_Lord's avatar
    Kayıt Tarihi: 23/Ağustos/2005
    Erkek
    hocam sonuna kadar okudum,süpersin.helal olsun,sağ ol tam da merak ediyordum.

    "biz televizyon izleyerek, milyonerler, sinema tanrıları, rock yıldızları olacağımıza inanarak büyüdük ama olamayacağız... hepimiz heba oluyoruz... bütün bir nesil benzin pompalıyor, garsonluk yapıyor ya da beyaz yakalı köle olmuş... reklamlar yüzünden araba ve kıyafet peşindeyiz... nefret ettiğimiz işlerde çalışıyor, gereksiz şeyler alıyoruz..
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    uchak
    uchak's avatar
    Kayıt Tarihi: 19/Nisan/2003
    Erkek

    beş beş! hoş bi dosya

    hopp doğru arşive


    HEPİMİZ ÖLÜCEZ!!! http://www.pardus.org.tr
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Stifler
    Stifler's avatar
    Kayıt Tarihi: 22/Eylül/2003
    Erkek

    sağolasın canım kardeşim


    3 Hafta önce Sigara Öldürüyor diye okudum, sigarayı bıraktım. 2 hafta önce Alkol Öldürüyor diye okudum, Alkolü bıraktım. Geçenlerde Aşırı Seks öldürüyor diye okudum, okumayı bıraktım..
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    de-ha
    de-ha's avatar
    Kayıt Tarihi: 30/Nisan/2007
    Erkek

    HERKES KENDİ KARANLIĞIN DA KAYBOLUR,AMA SAKIN YAZDIĞIN CODE DA KAYBOLMA

                                                                                                                     de-ha

Toplam Hit: 2979 Toplam Mesaj: 9