Programım kopyalanmasın (Dongle)

Başlatan SpeedyX, 08 Ekim 2007, 16:41:37

SpeedyX

Alıntı yapılan: "files"
Alıntı yapılan: "files"if i nasıl kaldıracağız? karşılaştırma yaparken if .... karşılaştırma, if siz nasıl yapılır.?
Bilen yokmu ? PicProje Forum Ana Sayfası -> --Delphi--   şeklinde bir yerdeyiz.
Sonuçta delphi olsun başka dil olsun, tüm if ler je, jne gibi assembly komutlarına dönüştürülüyor. Karşılaştırmalar şartlı dallanma komutları ile yapılır, mikroişlemciler dahil heryerde bu böyledir.
Picte if in adı btfss status,z gibi..
68hcXX de atmelde beq bne cmp gibi..
8086 da je jne gibidir.

Eğer if kullanmadan yapılacaksa asmye göre düşünmek gerekir. Çözüm aklıma gelmiyor.

Analyzer

Alıntı yapılan: "files"
if i nasıl kaldıracağız? karşılaştırma yaparken if kullanmayıon diyorlar. uzun işler  integer ..  hex keyler  sonuçta bir adet IF ile karşılaştırılmamalı. hepsi 1-2 ...60 ...60000 dakikada değerlendirilsin. ama eninde sonunda " if " denecek bunu nasıl giderebiliriz. karşılaştırma, if siz nasıl yapılır.?
Selam,

Speedyx'in de dediği gibi win32 derleyicileri cmp ve koşullu jmp (je,jne,jnz,jz... vb.) komutlarını kullanır. Örneğin en basit haliyle pseudo kodu şöyle olabilir :

if serial = girilen then kayit_ok()
else hata

gibi bir kontrol, cmp+jmp ikilisini oluşturur. Bundan kaçış yok. Arkadaş da debuggerla girer, kontrolün yapılması muhtemel yere breakpointi koyar. Ana dallanmanın olduğu yerdeki condition'u tersine çevirir. (jne->je gibi) Artık doğru serialden hariç ne serial girerseniz girin o program kayıt eder hale gelir. Ne yapabiliriz, kontrolü çoğaltabiliriz. Win32 için exe packer, crypter yazılımlar var onları kullanabiliriz (depacker ve decrypterları olanlar var dikkat), hazır dongle'ların envelope sistemi var, dongle satın alıp onları kullanabiliriz.(Sanıldığı gibi pahalı değil) Programın kendisine self checker yapabiliriz. Yani kafamızı kullanıp, krakerin programı alt etmesini önleyebiliriz.
Yine söylüyorum, bu koruma işini cra*ck yapma bilgisi olan daha iyi yapar. Öğrenmekte fayda var.

Analyzer
Üşeniyorum, öyleyse yarın!

SpeedyX

Alıntı yapılan: "Analyzer"Programın kendisine self checker yapabiliriz. Yani kafamızı kullanıp, krakerin programı alt etmesini önleyebiliriz.
Merhaba,
self checker dan şunu anladım;
Mesela program kendi boyutunu kontrol edip eğer boyutu değişmişse çalışmayacak... Ama ben programı mesela yazdım, içine boyut kontrol kodunu ekledim, sonra pack ettim... exe nin boyutu 3 kere değişti. Şimdi programın içine yazılan kontrol değeri ile exe nin boyutu tutmuyor.

Program kendi içindeki bir kodu da kontrol edebilir ama tam olarak nerde olduğunu bilmeli.. Bunlar biraz havada.

self check nasıl yapılır?
checksum?


Analyzer

Alıntı yapılan: "SpeedyX"
Alıntı yapılan: "Analyzer"Programın kendisine self checker yapabiliriz. Yani kafamızı kullanıp, krakerin programı alt etmesini önleyebiliriz.
Merhaba,
self checker dan şunu anladım;
Mesela program kendi boyutunu kontrol edip eğer boyutu değişmişse çalışmayacak... Ama ben programı mesela yazdım, içine boyut kontrol kodunu ekledim, sonra pack ettim... exe nin boyutu 3 kere değişti. Şimdi programın içine yazılan kontrol değeri ile exe nin boyutu tutmuyor.

Program kendi içindeki bir kodu da kontrol edebilir ama tam olarak nerde olduğunu bilmeli.. Bunlar biraz havada.

self check nasıl yapılır?
checksum?
Selam,

Aslında bahsedilenler havada değil. Şöyle ki; PE exe formatını incelerseniz header ve executable code'dan sonra veri dosyalarının eklenebileceği bir bölüm bulunur. Siz kontrolleri zaten executable kısım değişti mi diye kontrol edeceksiniz. Kontrolden elde ettiğiniz bir checksum verisini, veri kısmında gizlediğiniz checksum ile karşılaştırıp kontrol yaptırabilirsiniz. Bu sefer kraker bu karşılaştırmayı aramaya başlayacaktır. Ancak işi daha zorlaşmıştır. Bu karşılaştırmaları birbiriyle ilişkilendirip, çoğaltarak koruma güçlendirilebilir. Ayrıca gösterdiğiniz mesaj kutuları, edit kontrolleri için gerekli stringleri şifrelerseniz, dissasemble sırasında string reference'de görünmeyeceklerdir. (daha doğrusu anlaşılmayacaklardır) Bazı PE editörleri jump labelleri de anlamsız karakterlerle dolduruyor. Bu da debugging'i zorlaştırıp kafa karıştırır. Ayrıca programlarken prosedür içinde prosedür kullanmak, (c++ de ne kadar doğrudur tartışılır) mümkünse etiket+jump kullanmak da debugging esnasında bir çok gereksiz dallanmaya sebep olur, kırılmayı güçleştirir. Bu ve bunun gibi bir çok yöntem var, araştırmak lazım.

Analyzer
Üşeniyorum, öyleyse yarın!

Burak B

Arkadaşlar türkiyede bu işleri aşmış insanlar var ne yapılırsa yapılsın aşacaklardır. Basitçe birkaç nick veriyorum;

MrStop
Zafer
CYDONIA
renaTgaD
RvaZero
BlackCode
Votan
v.s. aklıma gelmeyen daha nicesi gibi.

CRC v.s. olaylarını aşmakta sandığınız kadar zor değil. Verdiğim linklerdeki forumlara takılırsanız anlarsınız. Yada Yurt dışı sitelerden tutorialleri okursanız. Söylendiği gibi crack konusunda sağlam bir koruma istiyorsanız crack işiniz iyi bilmeniz gerekiyor.

Kolay gelsin.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle