Demo işleminde if güvenliği

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
pasa_yasar
Üye
Mesajlar: 570
Kayıt: 07 Haz 2004 12:35

Demo işleminde if güvenliği

Mesaj gönderen pasa_yasar »

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.
deltas
Üye
Mesajlar: 358
Kayıt: 06 Mar 2004 01:08
Konum: Malatya...
İletişim:

Mesaj gönderen deltas »

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.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- 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. :wink:

- Ö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. :wink:
Resim
Resim ....Resim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

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)

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;
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:

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;
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.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
pasa_yasar
Üye
Mesajlar: 570
Kayıt: 07 Haz 2004 12:35

Mesaj gönderen pasa_yasar »

kodları md5 ile şifreler sayıları harf harf ord ile ascii kodlarla işlem yaptırırsam nasıl olur.
örneğin : 50 md5 ile iki kere şifreledim. daha sonra bunları karşılaştırdım yine aynı tehlike söz konusumu. ben çözülmez şifre beklemiyorum. word excel kullanan biri kırmasın yeter. crack çözüm yok.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Ş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. :wink:
Resim
Resim ....Resim
Kullanıcı avatarı
pasa_yasar
Üye
Mesajlar: 570
Kayıt: 07 Haz 2004 12:35

Mesaj gönderen pasa_yasar »

siz ne önerirsiniz. karşılaştırma işlemini nasıl yapsam daha uzun süre dayanır. desteklerinizi bekliyorum
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Sadece yol gösteriyoruz, bunu onu yapma demiyoruz.

- Yöntemlerimden bahsettim önceki mesajımda. Forumda daha önce konuşulan yöntemleri de irdelersen faydaı olur..
Resim
Resim ....Resim
Kullanıcı avatarı
Asri
Kıdemli Üye
Mesajlar: 767
Kayıt: 16 Eyl 2003 09:54
Konum: istanbul

Mesaj gönderen Asri »

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.
Öğrenmek ve öğretmek, akıntıya karşı yüzmek gibidir ilerleyemediğiniz taktirde gerilersiniz.
deltas
Üye
Mesajlar: 358
Kayıt: 06 Mar 2004 01:08
Konum: Malatya...
İletişim:

Mesaj gönderen deltas »

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.
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.
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
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 sabittir :D
Nice İnsanlar gördüm üstünde elbise yok;
Nice elbiseler gördüm içinde insan yok.
ertemsoft
Üye
Mesajlar: 129
Kayıt: 19 Nis 2005 01:22
İletişim:

Mesaj gönderen ertemsoft »

slm

Profesyonel bi koruma için Asprotect,Armodillo,TheMida gibi packerları
öneririm. ama bunlarda bu işin uzmanlarını durduramaz sadece biraz
işlerini uzatır. Tavsiyem demo ile orjinal programı farklı yap. Demoda
tüm bölümler olmasın.

saygılar.
Bilgi Paylaştıkça Çoğalır
Cevapla