Favorilerine Ekle | Giriş Sayfan Yap | Tavsiye Et

 

Kurs Tanıtım Sayfası | Süper Üye Kimdir? | Menü Tasarımı Konulu Örnek Ders
Kod İndir| Hazır Kodlar | Makaleler| İpuçları | VB .NET Kursu | Dersler | Forum | Alt Bölümler | Servisler
    Merhaba Misafir
    anasayfa » visual basic makaleleri » Programınız izniniz olmadan kullanılamasın...
Üye Girişi
Kullanıcı Adı:  
Şifre : 
Kaydet ?
Siteden tam olarak faydalanabilmek için üye olmalısınız.
Unuttuğunuz şifrenizi öğrenebilmek için kayıt sırasında verdiğiniz Hatırlatma Cevabı'nı bilmeniz gereklidir.
Şifre hatırlatma işlevini sadece 3 defa kullanma hakkınız vardır.
Kullanıcı adını ve şifresini unutan üyelere email ile yardım verilmez.

Aktivasyon Gelmedi mi?Aktivasyon mesajınız email adresinize gelmedi mi?
Buraya tıklayarak bir kez daha aktivasyon mesajı gönderilmesini sağlayabilirsiniz.
Lütfen email hesabınızın BULK ve SPAM klasörlerini de kontrol ediniz.
Rastgele Makale

EXCEL de veri olan iki ayrı sütunu birleştirme

Yazar: mztas

Webmasterlar
Sitenize Ekleyin!
Sitenizde "Son Eklenen 10 Visual Basic Yazısı"'nı göstermek ve içeriğini zenginleştirmek için buraya tıklayınız.

Vbasicmaster.com'a link verin!
Aşağıdaki minik banneri sitenize eklemek için tıklayın!

Üye Sayısı:
Ziyaretçiler nerede?
Yayın № : 854
Yayın Tar:12.09.2004
Yazar : pegamen
Hit :6604

Bu Yazarın Yazıları Sadece bu yazarın  göster
Bu Yazıyı Tavsiye Et

Programınız izniniz olmadan kullanılamasın...
-------------------------------------------------------------

Hazırladığınız programın sizin bilginiz dışında kopyalanarak kullanılmasını istemiyorsanız işte size mini bir örnek :
(Burada istenen yükleme sırasında size danışılmak zorunluluğu oluşturmak.)

Programınızla birlikte yüklenecek konfigürasyonla ilgili veri tabanında tek bir flag tanımlayın. yani yerini tasarım sırasında belirleyeceğiniz - sadece sizin bileceğiniz bir adreste bir bitlik bir yer ayırın. Bu bite "RegBit" diyelim. Aşağıdaki anlatımın sonunda "RegBit=1" ise program bilginizde yüklenmiş; "RegBit=0" ise program kopyalanmıştır diyeceğiz.("True/False" veya başka işaretler de kullanabilirsiniz - önemli olan iki farklı değere sahip olmak).Tabii ki ilk oluşturduğumuzda "RegBit=0" durumunda olacak.

Basit olarak mantığımız ne olacak :
Program çalıştığı zaman ilk yapacağı RegBit'i kontrol etmek olacak. "RegBit=0" olduğunu gördüğünde Register Formunu çağıracak.

Bu formu tanımlayalım :
Üzerinde 4 adet Label , 1 adet Text ve 1 adet de Command temel elemanları olan bir form. Çevre süslemeleri size ait...

Bu formun yüklenişinde Label elemanlarına 1'den 9'a kadar rastgele değerler yüklüyoruz. (Yüklenecek değerlerin kaçtan kaça kadar olabileceği size bağlı; ben örneği basitleştirmek için 1den 9a diyorum).
----------------------------------------------------------------------------
Option Explicit
Dim x(1 To 4) As Integer
----------------------------------------------------------------------------
Private Sub Form_Load()

x(1) = Int((9 * Rnd) + 1) '1'den 9'a rastgele sayılar üret.
x(2) = Int((9 * Rnd) + 1)
x(3) = Int((9 * Rnd) + 1)
x(4) = Int((9 * Rnd) + 1)

Label1.Caption = x(1)
Label2.Caption = x(2)
Label3.Caption = x(3)
Label4.Caption = x(4)

End Sub
----------------------------------------------------------------------------

Kullanıcıdan da bu değerlere karşılık gelen bir değeri Text'e yazmasını istiyoruz. Bunu belirten bir ifadeyi Label5 olarak forma yerleştirmek doğru olacaktır.(Label5.Caption="Lütfen kullanıcı kodunu giriniz...")

Kullanıcı tarafından değerler girilip Command'a tıklanınca ilk olarak Label'lardaki değerleri alıp tasarım sırasında belirlediğim matematik formulünde yerlerine koyuyorum ve beklediğim kodu elde ediyorum. Sonrasında basit olarak kullanıcının girdiği değerle hesapladığım değeri karşılaştırıyorum. Aynı değilse RegBit'i "0" bırakıyorum ve programdan çıkıyorum. Böylece program her çalıştırıldığında yukarıdaki durum tekrarlanıyor. Her defasında başka sayılar ve farklı bir kod...

Eğer kullanıcı sizin bilginiz dahilinde programı yüklüyorsa kendisinden "kullanıcı kodu" istendiğinde de sizi aramaktan çekinmeyecektir. siz de programın rastgele oluşturduğu değerleri alıp belki kafadan, belki hesap makinesi ile veya belki de bir başka kodlama programı ile programınızın sorduğu kodu oluşturup ona söyleyeceksiniz.

Kullanıcı doğru kodu girdiğinde program RegBit=1 kaydını yapacak bir sonraki çalıştırılmasında tekrar kod sormayacaktır.

----------------------------------------------------------------------------
Private Sub Command1_Click()

If Text1.Text = "" Then Exit Sub

Dim a As Integer
Dim b As Integer
Dim c As Inte4ger
Dim d As Integer

'şifre kontrol

a = x(1) + 1
b = x(2) + 1
c = x(3) + 1
d = x(4) + 1

Dim pass As Integer

'***
'Formülün ne derece karmaşık olacağı size bağlı
'Burada rastgele oluşturulan sayıların birer fazlasının mod 10 değerleri toplanıyor...

pass = ((2 * a) Mod 10) + ((2 * b) Mod 10) + ((2 * c) Mod 10) + ((2 * d) Mod 10)

'şifrenin doğruluğuna göre hareket
If Text1.Text <> pass Then
MsgBox "Hatalı şifre !", vbExclamation, "Dikkat"
End 'programı sonlandır
Else
'RebBit=1 yap, bu formu kapat ve programı çalıştır
End If

End Sub
----------------------------------------------------------------------------

Burada anlatılmaya çalışılan sadece bir yöntemdir. RegBit dediğimiz flag bitini nereye nasıl saklayacağınız veya formülün nasıl olacağı sizin VBasic programlama düzeyinize ve tarzınıza bağlıdır.

RegBit'in saklanacağı veri tabanı ilk çalışma sırasında dışarı atılan exe içine gömülü bir dosya; sizin programınızdan ayrı bir yerde oluşturacağınız bir text dosyası.... gibi birçok olasılıktan biri olabilir.

iyi çalışmalar dileğimle...
Mehmet
pegamen@gmail.com




Yorumlar, eklemeler ve düşünceler
        Oncelikle Tesekkur Etmek Istiyorum. Guzel Bir Yol Gibi Gorunuyo.
Ancak Flag Bit Nedir, Nasil Kullanilir? v.s. hakkinda da biraz bilgi verseniz iyi olurdu.

Selamlar, Mustafa...

   mstfkorkmaz, 13.09.2004 11:36
   Rast gele sayı üretirken Randomize
kullanmamışsın bu kullanıcının her defasında aynı rakamla
karşılaşması demek. Bir süre sonra şifre mantığını çözebilir.

Bu tip korumalar tabiki gerekli ama asla kesin çözüm değil
eğer kullanıcı biraz profesyönel ise bir hex editör ile yada
Visual Studyo içinde de gelen Visual C++ ile Binary modda
Exe yi açıp öyle şifre mantığı ilede uğraşmayıp kullandığımız
mantıksal lojik ifadedeki Doğru-Yanlış yapısını ters çevirip
yani Yanlış-Doğru yapıp amacına ulaşıyor.

   hakdogan75, 16.09.2004 23:00
   W32DSM ile daha iyilerinin kırıldığına sahit oldum

   zombi, 17.09.2004 02:20
   allogaritmayı biraz daha geliştirirsen çok güzel olur . Yaklaşık 64 bitlik bir logaritma var fakat bunu rc4 gibi bi allogaritma yaparsan o zaman çok güzeeel olabilir... İşlev güzel sadece allogritmada biraz oynarsak daha güzel olucak işte..

   lone_hacker, 14.01.2005 09:59
   mehmet bey, tam aradığım şeyi yazmışsınız... gerçi ben siz yazdıktan 2 yıl sonra görmüşüm dökümanı ama olsun.... arkadaşların bahsettiği güvensizlik olayları doğru olabilir ama ben liselere vereceğim bir programda kullanacağım inşallah ve bir okul müdürünün oturup benim peogram hex editörle inceleyeceğini sanmıyorum :))
çok teşekkürler

   m_devil, 17.02.2006 02:41
© Hakan Ersöz 2000-2013| Üyelik Sözleşmesi | | Ödeme Bildirimi
Sitemizden yenilikleri hemen öğrenin, pop upları engelleyin, chat yapın... ToolBarımızı indirin:
Vasicmaster Toolbar'ı indirin