مشاهدة النسخة كاملة : طرق الحماية في Visual Basic 6
@...Khalefa
10-13-2006, 05:32 PM
بسم الله الرحمن الرحيم
طرق الحماية في Visual Basic 6
موضوع الحماية في الـ Visual Basic6 موضوع مهم جدا بالنسبة لأي مبرمج في حفظ حقوقه الفكرية ومجهوده في تصميم البرامج . ولذلك يبحث عن الطرق المناسبة لتحقيق غرضه وهذه الطرق تتدرج في درجة كفاءتها حسب درجة أهمية البرنامج للمستخدمين والمجهود البر مجي المبذول فيه . ونتجت هذه الفكرة نتيجة الانتشار الواسع للمعلومات وإتاحتها لكل فرد حسب اهتمامهم والاتصال الرهيب بين المستخدمين وبعضهم مما جعل بعض بل الكثير من عدم الاهتمام بحق المبرمج فكريا كمالك للفكرة البرمجية, وماديا للاستفادة من العائد المادي لها في تطوير البرامج و إنتاج أفكار أخري , ومعنويا في الاهتمام بالتطوير وإنتاج الجديد ومن هنا نتجت فكرة الحماية كوسيلة للحفاظ على حق المبرمج والاستمرار في تقديم إنتاجه. وان شاء الله سوف اعرض هذه الأفكار والطرق بالتفصيل مع شرح لها مع مشروع يوضح الفكرة وطريقة تطبيقها بأسلوب مبسط يمكن القارئ من اختيار الأسلوب المناسب لمشروعة. مع ملاحظة أن كلما زاد أسلوب الحماية كلما قل انتشار البرنامج ووصوله إلى المستخدم فهي معادلة مهمة يهتم بها المبرمج لعمل توازن بين قيمة البرنامج ومدي انتشاره . وعلى سبيل المثال نجد أن هناك برامج حققت انتشار واسع جدا بالكاد لا يخلو جهاز منها وهي بدون أي وسيلة للحماية مثل Win Amp , Antivirus ,……وذلك لأهميتها لقطاع عريض جدا للمستخدمين بعكس برامج أخري تتطلب الحماية لاهتمامها بقطاع معين من المستخدمين مثل Photo Shop يهتم بمصممين الإعلانات والرسومات الفنية .وبالتالي هو موضوع مهم وان شاء الله إن كان هناك إقبال على الموضوع سوف أبدا بسرد الطرق كما وعدت كل يوم ويومين طريقة مختلفة لضيق وقتي بسبب العمل , مع إتاحة الفرصة للمهتمين بالموضوع لمناقشة أي جزئية به
وشكرا
أخوكم : محمد خليفة
خبير البرمجة
10-13-2006, 08:22 PM
بأرك الله فيك أخوي الطريقة بتاعك مميزة جدا
وأن شاءالله لكل يتبع هدا الموضوع الرائع
تقبل تحياتي
C A S T R O
10-14-2006, 01:25 AM
بأرك الله فيك
@...Khalefa
10-14-2006, 01:48 AM
متشكر جدا على الاهتمام
ولو في اي جزئية غير واضحة او اي استفسار في اللى اتشرح او اللى هايتشرح باذن الله
ان شاء الله هاوضحها
@...Khalefa
10-14-2006, 01:50 AM
بسم الله نبدأ
طرق الحماية تقوم على أكثر من أسلوب قد يستخدم أسلوب منها أو أكثر مجتمعة لزيادة الكفاءة اشهر هذه الأساليب هي التي تبني على أساس
1) وضع جملة معينة داخل التصميم ثم تطلب من المستخدم هذه الجملة إما أن تكون أحرف أو أعداد أو كلاهما ليتم تنشيط البرنامج
2) وضع عملية حسابيه لها ناتج محدد من المدخلات التي يدخلها المستخدم
3) وضع فترة زمنية محددة من بدء استخدام البرنامج وبانتهائها يلغي التنشيط
4) وضع عدد مرات محدد من الاستخدام
5) تغيير احد خصائص ملف معين كالمساحة مثلا
6) اعتماد علي بيانات تحفظ في التسجيل Registry
7) الاعتماد على احد مكونات الجهاز
الأساليب السابقة تندرج تحتها طرق فرعية ستشرح بأذن الله بالتفصيل
@...Khalefa
10-14-2006, 01:59 AM
بسم الله نبدأ
1)وضع جملة معينة داخل التصميم ثم تطلب من المستخدم هذه الجملة إما أن تكون أحرف أو أعداد أو كلاهما ليتم تنشيط البرنامج :
1-1) جملة حرفية : أي يتم استخدام مجموعة من الحروف لتكون هي المفتاح مثل.
Option Explicit
Dim ActiveCode As String, Response As String
Private Sub Command1_Click()
If Text1.Text = ActiveCode Then
MsgBox "Congratulations , You have entered the right code"
Else
Response = MsgBox("Sorry ! You have entered the wrong code" _
& vbNewLine & "Try again?", vbYesNoCancel)
If Responce = vbYes Then
Text1.Text = ""
ElseIf Response = vbNo Then
End
Else
Exit Sub
End If
End If
End Sub
Private Sub Form_Load()
ActiveCode = "Welcome"
End Sub
Private Sub Text1_Change()
If Text1.Text = "" Then
Command1.Enabled = False
Else
Command1.Enabled = True
End If
End Sub
هنا تم وضع المتغير ActiveCode وأضافه قيمة له وهي Welcome فعندما يدخل المستخدم هذه الكلمة ينشط البرنامج
مميزاتها:*تعتمد على حالة الأحرف (HigherCase or LowerCase) إي بتغير أي حالة حرف إلى اجري
لا تعطي تنشيط كما في المثال إذا تم تغيير Welcome إلى welcome أو WELCOME إلى آخرة
لا ينشط البرنامج
*لا يمكن عمل برنامج لفك شفرتها لأنها قيمة واحدة فقط
عيوبها:×إذا أعطى المصمم الجملة خطا أو بحالة الأحرف مختلفة
×بمجرد انتشار الجملة ضاعت فائدة الحماية
وكمثال عملي نسخ الويندوز لها جملة سرية فلا يمكن تثبيت الويندوز يدونها ولكن انتشار الجملة لم يقف حائل في عملية التثبيت
1-2) جملة عددية أي استبدال الأحرف بأرقام أي بدلا من Welcome تصبح 01069420 مثلا وهنا تقل خطورة الاعتماد على حالة الأحرف ويتم العمل كما في المثال السابق
1-3)جملة مختلطة أي بها أحرف وأعداد مثل تغيير كلمة Welcome إلى Welcome Agent 007 او A25S9W65465m7j5k
ويتم العمل كما في المثال السابق
المشروع بالمرفقات
والبقية إن شاء الله ستأتي تباعا
محمد
maxim90_ru
10-14-2006, 09:14 AM
مشكور أخي الكريم وجاري تجربة البرنامج .................
يعطيك العافيه
@...Khalefa
10-14-2006, 09:52 PM
بسم الله نبدأ
2) وضع عملية حسابيه لها ناتج محدد من المدخلات التي يدخلها المستخدم
2-1) قيم عددية مباشرة
فعند وضع المستخدم لجملة عددية يدخلها البرنامج في معادلة معينة مصممة بداخلة
لينتج ناتج إما أن يكون مساو لقيمة معينة أو مجموعة قيم أو قيم بها ارتباط ما
بالتفصيل
Option Explicit
Dim UnLockKey As Variant
Private Sub Command1_Click()
Dim ABC, DEF, GHI
GHI = 0
For ABC = 1 To Len(Text1.Text) Step 1
DEF = Mid(Text1.Text, ABC, 1)
DEF = Val(DEF)
GHI = GHI + DEF
Next ABC
If Val(GHI) = 50 Then
MsgBox "You entered the right code"
Else
MsgBox "You entered the wrong code"
End If
Text1.Text = ""
End Sub
Private Sub Form_Load()
UnLockKey = 50
End Sub
Private Sub Text1_Change()
If Text1.Text = "" Then
Command1.Enabled = False
Else
Command1.Enabled = True
End If
End Sub
بواسطة الدالة For Next حصلنا علي مجموع أرقام المدخل فإذا كان مساو لـ 50 يعطي
الإجابة الصحيحة وغير ذلك يعطي إجابة خطئه بمعني
((9579116543؛ 9191919191؛22224444155555؛7894563215...........الخ
مجموع أعدادهم يعطي 50 وهكذا
مثال آخر
Option Explicit
Dim UnLockKey As Variant
Private Sub Command1_Click()
Dim TXT, ABCx, DEFx, GHIx, RndNox
Dim AnyFor, SymbNo, VK
TXT = Text1.Text
'Get RndNo Value
For AnyFor = 1 To Len(TXT) Step 1
If Mid(TXT, AnyFor, 1) = "-" Then
RndNox = Mid$(TXT, 1, AnyFor - 1)
SymbNo = AnyFor
Exit For
End If
Next
TXT = Right$(TXT, Len(TXT) - SymbNo)
'Get GHIx Value
For AnyFor = 1 To Len(TXT) Step 1
If Mid(TXT, AnyFor, 1) = "-" Then
GHIx = Mid$(TXT, 1, AnyFor - 1)
SymbNo = AnyFor
Exit For
End If
Next
TXT = Right$(TXT, Len(TXT) - SymbNo)
'Get ABCx Value
For AnyFor = 1 To Len(TXT) Step 1
If Mid(TXT, AnyFor, 1) = "-" Then
ABCx = Mid$(TXT, 1, AnyFor - 1)
SymbNo = AnyFor
Exit For
End If
Next
TXT = Right$(TXT, Len(TXT) - SymbNo)
'Get DEFx Value
DEFx = TXT
'Check the serial
VK = (RndNox + 50) * 2
If Val(ABCx) <> Val(VK) Then
MsgBox "YOU entered the wrong code"
Exit Sub
End If
VK = Val(ABCx) + Val(RndNox) + 13
If Val(DEFx) <> Val(VK) Then
MsgBox "YOU entered the wrong code"
Exit Sub
End If
MsgBox "You Entered the RIGHT CODE" _
& vbNewLine & " It Works normaly"
End Sub
Private Sub Command2_Click()
Dim ABC, DEF, GHI
Dim RndNo
RndNo = Rnd
RndNo = Int(RndNo * 10000)
ABC = (RndNo + 50) * 2
DEF = ABC + RndNo + 13
GHI = Int(Rnd * 10000) '
Text2.Text = RndNo & "-" & GHI & "-" & ABC & "-" & DEF
End Sub
Private Sub Text1_Change()
If Text1.Text = "" Then
Command1.Enabled = False
Else
Command1.Enabled = True
End If
End Sub
المثال السابق يعتبر من الطرق الشائعة جدا وذلك لسهولة تغيير معادلاتها بعدد لا نهائي من المعادلات
وتغيير الصيغة وإضافة أجزاء أخري لها.
المشروعين بالمرفقات
والتحضيرات الأخرى إن شاء الله تباعا
محمد