Mega Code Archive

 
Categories / Delphi / Strings
 

Programlarınızı koruma hakkında bir kaç yardımcı nokta

Merhaba , Öncelikle Kırılamaz diye birşey yoktur sadece bu işlem zorlaştırılabilinir.Zorlaştırma için 1-Kontrol Bloklarını Mantıksal ifadeden çıkartma Örnek HDD Nosunu aldım Kriptoladın ve if A=B then ShowMessage('Registered') else ShowMessage('Demo'); ve Exe'yi Decompress ettin diyelim Bur kod mantıgı hemen kırılır Çünkü 2.Tane Kırılma Nedeni vardır. 1.Exe Decomplile edilerek debug edilebilinir ve ilk bakılacak olan yer mesajdır. Tabi Mesajın üzerinde je veya jne gibi ASM Kodu hemen göze karpar Hex Karşılıgı je = 75 jne 74 olarak belirtilir ve 75 olan yer yani if =>> 74 yapılarak if not durumuna getirilir böylece Dogru şifre haricindeki her serino geçerli olacak ve program bunu anlıyamıyacaktır. Yöntem 2 Diyelim ki Exe Decompile edilemiyor Bu seferde Memory Patch yazılırak Hafızadaki ASM Kodu Okuma esnasında degiştirilir 1. mantıkla aynı fakat degişiklik memoride Şimdi Dikkat edilmesi gereken unsurlar if kullanmadan kontrol edilmesi try GReg / VReg; // GReg Girilen Serino - Verilen SeriNo 0 / 1 Hata Sonsuza gider except Result:=False; end; Dikkat edilirse if mantıgı kullanmadan karşılaştırma yaptık.Ve Hiç bir şekilde serinoyu dogru girdiniz tebrikler gibi salak saçma bi mesaj vermiyoruz. Programın serial kontrol kısmına bir sürü Dummy Kod yazıyoruz yani yalancı kod Örnek A=A+4+B*C; C:=2*A-56; gibi Gereksiz ve anlamsık mümkün oldukça buda kodu debug eden crackerın kafayı sıyırmasına neden oluyor çünkü keygen yazmak gibi anlamsız işlere kendini veremiyor çünkü ASM Kodunda böyle anlamsız kodların nee işe yaradıgını çakamıyor. Mümkünse exesimizin compress modülünü kendimiz yazıyoruz .Kendi exe sıkıştırma yönetimini if yerine Case of Mantıgı kullanıyoruz Örnek Case RegisterType of 0:Result:=True; //Demo 1:Result:=False; //Registered end; Case mantıgında Random Deger Kullanma Diyelimki Herbiri farklı ama mantık olarak aynı olan 100 adet procedurumuz var Randomize i:=Random(100); Case i of 1:proc1(Sonuc); 2:proc2(Sonuc); 3:proc3(Sonuc); 4:proc4(Sonuc); 5.......100: end; Herdefasında 1 ile 100 arasında random sayı ve farklı procedure adam 1 nolu procedure kırsın ama tekrar oraya girdiginde bu sefer 34 nolu procedure gittiginde yine demo orayı kırdı tekrar random 65 nolu procecudure 100 procda bulup kırması lazım peki Biz bunu 3 lü yada 5 procedure mantıgına döndürürsek Adam 5*100 yani 500 Kod satırını bulup temizleyacek buda crakcera işkence ve hiç bir cracker kafaya takmadıgı sürece bir program kırılması üzerinde 3 günden fazla ugraşmaz Maksimum 5 gün diyelim Neyse bunları genişletebiliriz ama sonuçta işin ehli olan kişiler eninde sonunda kırmak isterlerse kırarlar En Önemli Kırılma engelleme yolu yazılımlarınızı uygun fiyata satmak ve destek vermekten geçer sürekli güncelleştirilen bir yazılımı ve uygun bir fiyata satılan programı kimse kırma yoluna gitmeyi düşünmez ve gerek duymaz .... Saygılarımla yazılım Uzmanı Kemal GÜLOL