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