السلام عليكم ورحمة الله وبركاتة
سنقوم هنا إن شاء الله بطرح الأفكار والأكواد البرمجية الخاصة بحماية البرامج
إن شاء الله الكل يتفاعل ونتستفيد جميعا
السلام عليكم ورحمة الله وبركاتة
سنقوم هنا إن شاء الله بطرح الأفكار والأكواد البرمجية الخاصة بحماية البرامج
إن شاء الله الكل يتفاعل ونتستفيد جميعا
وعليكم السلام ورحمة الله وبركاته
شكل الموضوع رهيب (:
1- حماية برامجك بخصوصية من المتطفل
الفكرة هي بناء برنامج ثانوي يطلب كلمة سر و سوف يعمل البرنامج الاساسي ان كانت الكلمة صحيحة
فكرة تصميم برنامج يعمل على فايند ويندوز مع اعطاء الصلاحيات للمستخدم كأن يجبر فقط على تصفح موقع المنتدى
2- حماية برنامج بكلمة سر ( شيء مثل الكيجن )
الفكرة هي ان البرنامج يعطي رمز خاص لكل حاسب وعلى اساس هذا الرمز سوف يمكن تسجيل البرنامج ( وذلك بعد ان دفع 1000 $ لقاء البرنامج)
(:
السلام عليكم ورحمة الله وبركاته
اسف على التأخر
ولكن حماية برنامج بكلمة سر ( شيء مثل الكيجن )
ليس بالأمر الصعب او المعقد
ولكن الكيجن ليس حماية لأنه يمكن انتاجه خاصة اذا كان محدد
بزمن معين واذا كان غير محدد بزمن معين
يكفي ان يحصل عليه شخص واحد
ليتم نقل الي كل مستخدمي البرنامج الاخرين
واما طريقة الحماية بواسطة السيريال نمبر
فهي طريقة بسيطة جدا جدا
وانتجت كودها وسارفعه لكم لاحقا اذا طلبتموه
لكل شيئ إذا ماتم نقصان فلا يغتر بطيب العيش إنسان
السلام عليكم
لا ادري ولا اعلم شيء عن السكيريتي ,
لأن الهكر ما خلو شي
شكرا لك يا ماجد , ويالله مشاركتكم ,,,,,,
السلام عليكم
هذا هو الكود
كود:'Add 1 CommandButton (named Command1) to your Form. Private Declare Function GetVolumeInformation Lib "kernel32.dll" Alias _ "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal _ lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Integer, _ lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, _ lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal _ nFileSystemNameSize As Long) As Long Private Function GetSerialNumber(strDrive As String) As Long Dim SerialNum As Long Dim res As Long Dim Temp1 As String Dim Temp2 As String Temp1 = String$(255, Chr$(0)) Temp2 = String$(255, Chr$(0)) res = GetVolumeInformation(strDrive, Temp1, _ Len(Temp1), SerialNum, 0, 0, Temp2, Len(Temp2)) GetSerialNumber = SerialNum End Function Private Sub Command1_Click() 'Replace 'c:\' with the drive you want to find his serial number Call MsgBox(GetSerialNumber("c:\")) End Sub
لكل شيئ إذا ماتم نقصان فلا يغتر بطيب العيش إنسان
هذا الكود ليس لحماية اي برنامج وليس له اي خصوصية في الحماية هذا الكود يعطيك الرقم التسلسلي لوحدة الحفظ سي هذا ما اراه امامي من كود ولم اشاهد المرفق (:
صحيح كلامك ولكن ليس هذه الطريقة ليسة نافعة 100% سبب هو ان كراكرز دوما يعرفون كيفية الغاء ربط البرنامج ليصل الى سطر الكود وفي الوقت الحالي وجدت ان الشركات بدأت تقدم نسخ تجريبية بمعنى الكلمة و باتت النسخ التي يقرأ عليها تجريب لاترضي حتى المستخدم حتى بعد فك الرمزهذا ما يسمى ببصمة الجهاز Hardware Fingerprint
وهذا هو ما ابحث عنة منذ اكثر من 3 اشهر لاكني لم اعثر على كود واحد يخص هذا الموضوع
وهذة اعتقد هي افضل طريقة حماية من النسخ على الأطلاق
وايضا ليس كل الكراكرز فهيمين اي ان عملهم اصبح روتين ( وجد برنامج ، البرنامج يحتاج الى تسجيل = وقف عملية التسجيل ليصبح البرنامج يعمل الى الابد ) وهنا يأتي اكبر خطأ لان البرنامج هو اصلا متوقف كأن لا يعمل مثلا كونفيرت لدوكيومنت ولكنه ينشئ الملف التحويل ( بمحتويات صفر )
هنا يأتي عمل الهاكر لاختراق المواقع و جلب نسخة الاصلية الكاملة للنشر ولكن ايضا يحتج الى رقم سري و من هنا نرجع الى كراكرز
انا لاحظت انو في طريقة جدا ممتازة هي ان البرنامج ينشئ رمز سري يعمل مثلا على حاسوبي و لايعمل مثلا على حاسوبك
الرمز كأن
your pass~active =588hdwn
البرنامج سوف يطالبك فقط user & password
تذكر السطر الي فوق يعتمد علىوهنا سوف تكمن المشكلةyour pass~active =588hdwn
المهم كيف يمكن انشاء رمز متغير
كأن يعتمد على كم الساعة الان ( في هذه الحالة الاكتذ حيكون متغير )
او كأن يكون رقم متغير مثل
Int(Rnd * 9) + 1
وحاول ان تبحث عن alphanumeric او hex
يمكن تجد حلول
جزاك الله خير اخي محمد
وارغب ان اسالك هل هناك طريقة لتغيير الرقم التسلسلي برمجيا
وهل عند فرمتة الهارد يتم تغيير الرقم التسلسلي
فعلا الكود لا يقوم بأي حماية لاكن عن طريق هذا الكود سوف احصل على الرقم التسلسلي
للهاردسك الذي سأضع علية برنامجي وعند تشغيل مرة اخرى سيقوم البرنامج بقراءة الرقم التسلسلي
من الجهاز ومقارنتة مع ماهو مسجل سابقا في البرنامج
سوف اقوم ان شاء الله بعمل المشروع اما عن طريقة تسجل البرنامج فهي ستكون عن طريق
موقع على الأنترنت والخطوات كتالي
1- طبعا لكل برنامج رقم معين مثلا نسخة رقم 1 والنسخة رقم 2 وهكذا
البرنامج ليس موجود على الأنترنت انما يقوم الزبون بشراءة منك شخصيا او عن طريق وكيلك
2- يقوم البرنامج بإخذ الرقم التسلسلي وعرضة على المستخدم ليسجلة في الموقع وكذالك رقم النسخة
3- يقوم البرنامج بتشفير الرقم التسلسلي بطريقة معينة ويحتفظ بة لنفسة
4- عند ادخال المستخدم الرقم التسلسلي في الموقع فأنة يقوم بتشفيرة بنفس طريقة البرنامج
ومن ثم يقوم بعرضة على المستخدم كرمز تفعيل
( هناك علاقة بين رقم النسخة وطريقة التشفير) لضمان ان المستخدم يملك نسخة جديدة غير مسجلة
(موقع التسجيل لن يقبل اعطاء رمز التفعيل لرقم نسخة قد تم تسجيلها مسبقا)
وبهذة الطريقة نكون قد ضمنا إن شاء الله ان برامجنا لم يتم قرصنتها
<<اتمنى ان يرى هذا المشروع النور..............لاكن هل هناك من يرغب في مساعدتي بتصميم
الموقع الخاص بالتسجيل,,
>< >< ><
بس بس بس .... بلا هكر بلا كلام فاضي
مالي نفس اقرأ شي <<<< الي ما يطول العنب ........ ^^"
السلام عليكم ورحمة الله وبركاته
انا اسف على الخطأ الغير مقصود
الكود هو
تجدوه في المرفقاتكود:Private Function getPlusMinus(chrr) As Boolean ' <<< This function retunrs either true or false chrr = UCase(chrr) ' depending on if a charachter is more than ' halfway through the alphabet or not... If Asc(chrr) - 65 < 12 Then getPlusMinus = True Else getPlusMinus = False End If End Function Public Function genNumber(appName) Dim appVal As Long Dim genVal As Long Dim tmpVar As String Dim i As Integer Dim seedMod As Integer For i = 1 To Len(appName) - 0 appVal = appVal + Val(Asc(Mid$(appName, i, 1))) ' <<< Counts the value of each ascii chr Next ' in the app name seedMod = Int((Day(Date) & Month(Date) & Year(Date) & Hour(Time) & Minute(Time) & Second(Time)) ^ 0.2) For i = 0 To Int(seedMod + Minute(Time) & Second(Time)) ' <<< Vb's random num generator is not Rnd ' very random so i will make it more Next ' random tmpVar = "" For i = 1 To 20 ' <<< Randomly create the 1st 4 parts of the code If Rnd < 0.5 Then ' <<< 1 in two chance of a letter or a number tmpVar = tmpVar & Chr(Int(Rnd * 25) + 65) Else tmpVar = tmpVar & Int(Rnd * 9) End If If Int(i / 5) = i / 5 And i <> 25 Then ' <<< Add a ' - ' every 5 charachters tmpVar = tmpVar & " - " End If Next For i = 1 To Len(tmpVar) - 0 ' <<< Creates a number based on the If i < Len(appName) Then ' first sections. Adds or takes If getPlusMinus(Mid(appName, i, 1)) = False Then ' depending on various things genVal = genVal + Val(Asc(Mid$(tmpVar, i, 1))) ' Makes it mathematicaly harder Else ' to re-order the code. genVal = genVal - Val(Asc(Mid$(tmpVar, i, 1))) End If Else If Int(i / 2) = i / 2 Then genVal = genVal - Val(Asc(Mid$(tmpVar, i, 1))) Else genVal = genVal + Val(Asc(Mid$(tmpVar, i, 1))) End If End If Next If genVal < 0 Then genVal = 0 - genVal ' <<< If the number is less than 0 then make it ' positive tmpVar = tmpVar & Mid((genVal * appVal) & "JSDEU", 1, 5) ' <<< Last part of the code is the ' 'value' of the first part of ' the code times the 'value' ' of the program name, limited ' to 5 charachters. "JSDEU" is ' to make sure the result is ' atleast 5 chars. genNumber = UCase(tmpVar) ' <<< Returns the new key End Function Public Function authKey(key, appName) As Boolean authKey = False On Error GoTo err Dim splt() As String Dim appVal As Long Dim genVal As Long Dim tempVar As String Dim i As Integer key = UCase(key) For i = 1 To Len(appName) - 0 appVal = appVal + Val(Asc(Mid$(appName, i, 1))) Next splt = Split(key, " - ") splt(4) = "" tempVar = Join(splt, " - ") For i = 1 To Len(tempVar) - 0 If i < Len(appName) Then If getPlusMinus(Mid(appName, i, 1)) = False Then genVal = genVal + Val(Asc(Mid$(tempVar, i, 1))) Else genVal = genVal - Val(Asc(Mid$(tempVar, i, 1))) End If Else If Int(i / 2) = i / 2 Then genVal = genVal - Val(Asc(Mid$(tempVar, i, 1))) Else genVal = genVal + Val(Asc(Mid$(tempVar, i, 1))) End If End If Next If genVal < 0 Then genVal = 0 - genVal splt = Split(key, " - ") If genVal = Val(splt(4)) / appVal Then authKey = True Else authKey = False End If Debug.Print Mid((appVal * genVal) & "JSDEU", 1, 5) Debug.Print splt(4) If Mid((appVal * genVal) & "JSDEU", 1, 5) = splt(4) Then authKey = True Else authKey = False End If err: End Function 'DEMO SUB PROCEDURE Private Sub Command1_Click() Dim myAppName As String myAppName = Text1.Text mySN = genNumber(myAppName) Label1.Caption = mySN End Sub
وسوف اشرح لكم طريقة اخي لأنتاج السيريال نمبر
بعد ظهيرة اليوم انشاء الله
لكل شيئ إذا ماتم نقصان فلا يغتر بطيب العيش إنسان
السلام عليكم ورحمة الله وبركاته
اخوتي اليكم هذا المشروع
عن السيريال نمبر
في ( المرفقات )
لكل شيئ إذا ماتم نقصان فلا يغتر بطيب العيش إنسان
السلام عليكم
شباب المشروع فشل قبل ان ينفذ
مادام هناك طريقة لإنتاج سيريال نمبر
ومشكور على تعاونك اخي محمد
السلام عليكم ورحمة الله وبركاته
موضوع جيد إن شاء الله .. لكن نصيحتي إليكم لا تتعبوا بمحاولة حماية البرامج لأن هذه الحماية المطلوبة مستحيلة وغير موجودة بالمرة .
واسألوا اخواننا مبرمجي لغة التجميع
* بالمناسبة كسر برنامج يعتمد على رقم أو سيريال الهارد ديسك أو المازر بورد سهل جداً حتى أنني أستطيع ذلك
تحياتي
أبو عبد الله ـ عمر محمود هاني ـ