Demo işleminde if güvenliği
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- pasa_yasar
- Üye
- Mesajlar: 570
- Kayıt: 07 Haz 2004 12:35
Demo işleminde if güvenliği
iyi çalışmalar.
demo ve lisanslama yapmak istiyorum. borland dosya mantığını kullanmak istiyorum. program bakacak dosya varmı varsa içeriği uyuşuyorsa çalışacak. burada if dosya varmı yokmu kısmı rahatlıkla kırılabilirmi acaba. bunun güvenliğini nasıl sağlarım.
demo ve lisanslama yapmak istiyorum. borland dosya mantığını kullanmak istiyorum. program bakacak dosya varmı varsa içeriği uyuşuyorsa çalışacak. burada if dosya varmı yokmu kısmı rahatlıkla kırılabilirmi acaba. bunun güvenliğini nasıl sağlarım.
kesinlikle kırılır. forumda crak diye arattırırsan daha önce konuşlan konuları görürsün. Ancak programım kıralamaması ile uğraşmanı tavsiye etmem. Çünkü kırılmak istenirse mutlaka kırarlar. Ancak lamerlerin işini zorlaştırman için tavsiyem programını paketlemen olur.
Nice İnsanlar gördüm üstünde elbise yok;
Nice elbiseler gördüm içinde insan yok.
Nice elbiseler gördüm içinde insan yok.
- Kırılmaz diyemeyiz ama crack yapacak kişileri sıkıntıya sokmak için bir kaç yanıltmaca ekleyebilirsin.
- IF sonucu program dosya içeriği uyuşuyorsa çalışacak, uyuşmuyorsa çalışmayacak demişsin ya, uyuşmuyorsa da çalışsın ama rastgele bir süre sonra menülerin hepsi kapalı hale dönsün olsun. Mesela FORM caption'un varsayılan başlığında "kopya koruması devrede" gibi bir yazı olsun. Program sorgu sonucu uygun ise bu başlık veritabanından bir dinamik bir text ile güncellensin.
- Hem kullanıcı programın çalıştığını ama erişimin yapılamama gerekçesini anlamış olur hem de crack yapacak kişi IF sorgusunun yerini mesaj veya kırılma noktası olmadığından erişmekt zorlanır.
- Örneğin bazı projelerimde rastgele bir süre sonra kendiliğinde mesaj vermeden program kapanır. Kaçak kullanıcı bunun gerekçesini bana sormaya cesaret de edemez. Ama programın çalışma prensibi ile ilgili bir yerinde nedeni bir şekilde ifade edilir.
- Bunu sadece örnek olsun diye yazdım. Crack hakkında biraz yazı okursan, kilometre taşlarının ilkinin kırılma noktasının tespiti olduğu aşikardır. Bunu gizlemeyi başarırsan cracker'ların harcayacağı mesaiyi %100 arttırmış olursun.
- IF sonucu program dosya içeriği uyuşuyorsa çalışacak, uyuşmuyorsa çalışmayacak demişsin ya, uyuşmuyorsa da çalışsın ama rastgele bir süre sonra menülerin hepsi kapalı hale dönsün olsun. Mesela FORM caption'un varsayılan başlığında "kopya koruması devrede" gibi bir yazı olsun. Program sorgu sonucu uygun ise bu başlık veritabanından bir dinamik bir text ile güncellensin.
- Hem kullanıcı programın çalıştığını ama erişimin yapılamama gerekçesini anlamış olur hem de crack yapacak kişi IF sorgusunun yerini mesaj veya kırılma noktası olmadığından erişmekt zorlanır.

- Örneğin bazı projelerimde rastgele bir süre sonra kendiliğinde mesaj vermeden program kapanır. Kaçak kullanıcı bunun gerekçesini bana sormaya cesaret de edemez. Ama programın çalışma prensibi ile ilgili bir yerinde nedeni bir şekilde ifade edilir.
- Bunu sadece örnek olsun diye yazdım. Crack hakkında biraz yazı okursan, kilometre taşlarının ilkinin kırılma noktasının tespiti olduğu aşikardır. Bunu gizlemeyi başarırsan cracker'ların harcayacağı mesaiyi %100 arttırmış olursun.

- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Derleyici yönergelerini (compiler directives) kullanırsan bir sorun olmaz. Çünkü bu .exe için derleme şartlarını belirler. Ama yan etki olarak tam sürüm için ve demo için ayrı ayrı .exe derlemen gerekmektedir ama kodlarınla çok oynaman gerekmemektedir. Mesela bir örnek:(ProgramSekli için psDemo,psNormal,psBeles değerlerinin üçünü de verip çalıştırırsan ne demek istediğimi daha iyi anlarsın) Buna benzer yapı kullanarak sadece const ProgramSekli=psDemo; satırındaki değişkene ayar vererek derlenecek .exe dosyasına şekil verilebilir. Bu derleyici yönergeleri derlemeye alınacak satırları belirlemek için kullanılmaktadır. Bu yüzden kırılma diye birşey söz konusu değildir. Tam sürüm kodları gerekli blok içine almak çok dert olmaz herhalde. Mesela şöyle bir kodda hata gelmeyeceğini belirtirsem ne demek istediğimi anlarsın: Bu kodu bire bir kopyalar alırsan kod hata vermeyecek ve çalışarak Burası önemli mesajı verecektir. Diğer hatalı satırlar ise derleyici yönergelerinden dolayı es geçilir. Bu teknik benim bayağı işime yarayan bir teknik ve demo kırılması gibi bir durumda söz konusu da değildir (programda tam sürüm işlevleri olmadığından). İyi çalışmalar.
Kod: Tümünü seç
type TProgramSekli=(psDemo,psNormal,psBeles);
const ProgramSekli=psDemo;
.
.
.
begin
ShowMessage('İşlem devam ediyor');
{$IF (ProgramSekli=psNormal)}
ShowMessage('Normal versiyon');
if SifreKontrol then
{$ELSEIF (ProgramSekli=psDemo)}
ShowMessage('Demo versiyonu kullanamazsınız');
Abot;
{$ELSE}
ShowMessage('Beleş versiyon');
{$IFEND}
ProgramiKullan;
end;
Kod: Tümünü seç
const ProgramSekli=psDemo;
.
.
.
begin
ShowMessage('İşlem devam ediyor');
{$IF (ProgramSekli=psNormal)}
flkdsfndsfdsf
dsfdl
burasını derleyici kafasına takmaz
{$ELSEIF (ProgramSekli=psDemo)}
ShowMessage('Burası önemli');
{$ELSE}
burasını da derleyici kafasına takmaz
{$IFEND}
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
- pasa_yasar
- Üye
- Mesajlar: 570
- Kayıt: 07 Haz 2004 12:35
Şifrelemek sorun değil ki, asıl sorun şifrelerin karşılaştırması...
- MD5 ile şifrelenmiş atıyorum "kj3g4jhg34jhg2jh4h2j" şifresini karşlışatırdığında eşit ise başla dediğin yere, crack operasyonundan sonra eşit değilse başla şeklinde müdahale edilir. Bu durumda komik gelecek ama gerçek şifre girersen çalışmaz, bunun dışında girdiğin veya girmediğin şife sonucu program çalışır duruma gelir.
- MD5 ile şifrelenmiş atıyorum "kj3g4jhg34jhg2jh4h2j" şifresini karşlışatırdığında eşit ise başla dediğin yere, crack operasyonundan sonra eşit değilse başla şeklinde müdahale edilir. Bu durumda komik gelecek ama gerçek şifre girersen çalışmaz, bunun dışında girdiğin veya girmediğin şife sonucu program çalışır duruma gelir.

- pasa_yasar
- Üye
- Mesajlar: 570
- Kayıt: 07 Haz 2004 12:35
Koruma önlemi olarak. IF den hemen önce orj anahtarı oluşturup karşılaştırmak yapmak ve IF den hemen sonra da bu değeri boşaltmak çok önemlidir. Programın hafızada kapladığı alanda hatalı girilen kod aranarak karşılaştırma için hazırlanmış doğru kod bulunabiliyor.
Tarih kontrollü bir IF kullanmakda çözüm olabilir. Bütün procedurelerin içine "IF bugun>tarih then exit" gibi bir kod yazılabilir.Sistem tarihi geri alınabilir ama nereye kadar
iyi çalışmalar.
Tarih kontrollü bir IF kullanmakda çözüm olabilir. Bütün procedurelerin içine "IF bugun>tarih then exit" gibi bir kod yazılabilir.Sistem tarihi geri alınabilir ama nereye kadar

iyi çalışmalar.
Öğrenmek ve öğretmek, akıntıya karşı yüzmek gibidir ilerleyemediğiniz taktirde gerilersiniz.
Asri hocam bu konuda çok haklısın. bunun gibi hatalı güvenlik almaya çalışan coderlar var. bu şekilde 1-2 programa rastlamıştım. Programı kırmak için bi hex editoru yeterli gelmişti.Koruma önlemi olarak. IF den hemen önce orj anahtarı oluşturup karşılaştırmak yapmak ve IF den hemen sonra da bu değeri boşaltmak çok önemlidir. Programın hafızada kapladığı alanda hatalı girilen kod aranarak karşılaştırma için hazırlanmış doğru kod bulunabiliyor.
Hocam tarihi kontrol etme şeklinde yaptığında regedite setup tarihini yazdırır ve sistem tarihi ile regeditte kayıtlı tarih arasında geriye gitme şeklinde bir uyumsuzluk varsa program kendini kapatır. sistemi sürekli kurulum tarihine alma işlemini engellemek içinde bi anahtar daya yapılır ve anahtar sürekli artırılır ve artan gün sayısı setup tarihinin üstüne yazılır. Ve adam programı uninstal ettiği zaman dahi regeditte bi anahtar programın eski kurulum tarih bilgilerini saklar. Bir çok tarih korumalı program bu şekilde korunuyor ve regedite atılan anhtarda programın ismi ile kayıt edilmiyor. Daha öncedeki (crack) tecrübelerimle sabittirTarih kontrollü bir IF kullanmakda çözüm olabilir. Bütün procedurelerin içine "IF bugun>tarih then exit" gibi bir kod yazılabilir.Sistem tarihi geri alınabilir ama nereye kadar

Nice İnsanlar gördüm üstünde elbise yok;
Nice elbiseler gördüm içinde insan yok.
Nice elbiseler gördüm içinde insan yok.