منتديات اهل الحق
مرحبا بكم في منتدياتنا منتديات اهل الحق و أرجو من زائرنا العزيز أن يجد كل ما يبحث عنه من مواضيع و برامج ......وشكراا...
منتديات اهل الحق
مرحبا بكم في منتدياتنا منتديات اهل الحق و أرجو من زائرنا العزيز أن يجد كل ما يبحث عنه من مواضيع و برامج ......وشكراا...
منتديات اهل الحق
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.


الرئيسيةالرئيسية  أحدث الصورأحدث الصور  دخولدخول  التسجيلالتسجيل  
آيـــــات الشفاء في القرآن الكريم إن هذه الآيات تجتمع في كل آية فيها كلمة شفاء و تقرأ بترتيب المصحف فقد قال العلماء أن في هذا استعانة بكلام الله على الشفاء و خصوصا بالنسبة للأمراض التي لا تقدر عليها أسباب البشر...وهـــم:- الآية 14 من سورة التوبة: قَاتِلُوهُمْ يُعَذِّبْهُمُ اللّهُ بِأَيْدِيكُمْ وَيُخْزِهِمْ وَيَنصُرْكُمْ عَلَيْهِمْ وَيَشْفِ صُدُورَ قَوْمٍ مُّؤْمِنِينَ... صدق الله العظيم الآية 57 في سورة يونس : يَا أَيُّهَا النَّاسُ قَدْ جَاءتْكُم مَّوْعِظَةٌ مِّن رَّبِّكُمْ وَشفَاء لِّمَا فِي الصُّدُورِ وَهُدًى وَرَحْمَةٌ لِّلْمُؤْمِنِينَ... صدق الله العظيم الآية 69 من سورة النحل : وَاللّهُ خَلَقَكُمْ ثُمَّ يَتَوَفَّاكُمْ وَمِنكُم مَّن يُرَدُّ إِلَى أَرْذَلِ الْعُمُرِ لِكَيْ لاَ يَعْلَمَ بَعْدَ عِلْمٍ شَيْئًا إِنَّ اللّهَ عَلِيمٌ قَدِيرٌ... صدق الله العظيم الآية 82 من سورة الإسراء : وَنُنَزِّلُ مِنَ الْقُرْآنِ مَا هُوَ شِفَاء وَرَحْمَةٌ لِّلْمُؤْمِنِينَ وَلاَ يَزِيدُ الظَّالِمِينَ إَلاَّ خَسَارًا... صدق الله العظيم الآية 80 من سورة الشعراء : وَإِذَا مَرِضْتُ فَهُوَ يَشْفِينِ... صدق الله العظيم الآية 44 من سورة فصلت : وَلَوْ جَعَلْنَاهُ قُرْآنًا أَعْجَمِيًّا لَّقَالُوا لَوْلَا فُصِّلَتْ آيَاتُهُ أَأَعْجَمِيٌّ وَعَرَبِيٌّ قُلْ هُوَ لِلَّذِينَ آمَنُوا هُدًى وَشفَاء وَالَّذِينَ لَا يُؤْمِنُونَ فِي آذَانِهِمْ وَقْرٌ وَهُوَ عَلَيْهِمْ عَمًى أُوْلَئِكَ يُنَادَوْنَ مِن مَّكَانٍ بَعِيدٍ...||

 

 تعلم كيف تحمي برامجك من السرقة من الصفر برجاء التثبيت (متجدد)

اذهب الى الأسفل 
كاتب الموضوعرسالة





التقييم : 3
نقاط : 357210
تاريخ التسجيل : 01/01/1970

تعلم كيف تحمي برامجك من السرقة من الصفر برجاء التثبيت (متجدد) Empty
مُساهمةموضوع: تعلم كيف تحمي برامجك من السرقة من الصفر برجاء التثبيت (متجدد)   تعلم كيف تحمي برامجك من السرقة من الصفر برجاء التثبيت (متجدد) I_icon_minitimeالأربعاء فبراير 27, 2013 12:49 pm

ما سأقوم بشرحه الان هو الاسلوب الشامل لحماية برنامجك من السرقة في ببيئة الــ dot net
وسيكون الشرح من الصفر الي الاحتراف في التشفير
فلنستعن بالله ولنبدأ الموضوع


اولا

مبادئ الحماية

تعرض الكثير منا للسرقة في برامجه ووسائل كسر الحماية تعددت
حتي اني قابلت صديقا لي اشهد له بالاحترف البرمجي قال
"لطالما برامجي تسرق فلن ابرمج مجددا"!!
لكن ما لم نفكر به هو كيف نحمي برامجنا من السرقة
لذا يجب اولا ان نفهم كيف يفكر الكراكر الذي يكسر حماية برامجنا
1- الكراكر ذكي جدا لانه مطلوب منه فهم طريقة تفكيرك في حماية برنامجك بل وكيف يتفوق عليك في كسرها
2- يحاول الكراكر ان يحل معادلة التشفير الخاصة ببرامجك وهي غالبا ما تتلخص في اسلوب تشفير بسيط او كلمة سر خاصة بك
3- ان لم يستطع فسيحاول ان يحاكي ظروف النسخة الاصلية كمثال البرامج
المحمية بــ dongle فكسرها لا يعتمد علي فك تشفير معادلاتها بل بمحاكاة
الــ dongle نفسه والبرنامج اعمي سيجد ان الــ dongle موجودا فيرفع حمايته

4- او البعض يحاول الوصول الي طريقة اكتشاف سرقة البرنامج و يعطلها كمجموعة
الــ photoshop فالكراك الخاص بها اساسه تعطيل وصول البرامج الي النت لكي
لا تكتشف الشركة سرقتها
5- او يحاول (وهذا اضعف الايمان ) ان يطيل مدة النسخة التجريبية لبرنامجك كلما اراد كالمثال المشهور لــ antiarp
وهذه هي الطرق التي يحاول الكراكر اختراق برنامجك بها لذا سنحاول اغلاق هذه
الثغرات واحدة تلو الاخري كي نسطيع القول ان برامجنا محمية بنسبة 90% (ولا
يمكن ان تزيد هذه النسبة لكن لا بأس بها)


ثانيا

ربط البرنامج بمكون من الجهاز

البعض يلجأ الي ربط البرنامج بسيريال من الجاز كالخاص بالبروسيسور او الهارد او حتي اسطوانة البرنامج
وهذه طريقة مثلي للحماية من نقطة الضعف الاولي ولكن كيف؟؟
لقد ابطلت شركة انتل خاصية امداد البرامج بسيريال البروسيسور منذ صدور core 2 due
وبالطبع لا يمكننا الاعتماد علي علي المعالجات القديمة لبيع برامجنا
اما سيريال الاسطوانة الخاصة بالبرنامج فهو اسهل ما يمكن كسرة فالبرامج
متعدده لهذا الغرض مثل virtual cd - demon tools - alcohol وغيرها الكثير
يبقي لنا الهدف الوحيد وهو القرص الصلب hard disk
ولكن تعددت المحاولات لقراءة مسلسل القرص الصلب ولكن معظمها اابي الي الفشل
اما بقراءة انواع معينه كالاقراص الــ ata ولكن لا تستطيع قراءة الــ
sata او قراءة مسلسل الــ partition وهو يتغير مع كل عملية تهيئة format

ولكني اقدم لكم الحل الامثل في صورة مكتبة dll يمكنك من خلالها ان تسترجع
رقم مسلسل القرص الخاص بالمصنع والذي لا يمكن تغييره او محاكاته
اسم المكتبة
Interop.HWINFOCOMLib.dll
سيتوجب علينا قبل إستخدامها تسجيلها في مسجل الويندوز عن طريق نقلها الي
مجلد الــ system32 الخاص بالنسخة وكتابة الامر التي في قائمة run




كود:
regsvr32 %SystemRoot%\System32\Interop.HWINFOCOMLib.dll
ولتسهيل العمل سنقوم ببناء class اسمه protect
في مشروعنا
وسنضع دالة داخل الكلاس لتسترجع لنا مسلسل القرص بناءا عل الدالة الخاصة بنا ولكن لنضيف المكتبة الي مشروعنا عن طريق add reference




كود:
function getserial
Dim harddiskserial As New HWINFOCOMLib.HD
dim ser as string = harddiskserial.serialnumber
return ser
end function
لذا فوارد هذه الدالة هو مسلسل القرص الصلب الخاص بالجهاز
والي هنا قد تفادينا محاولات محاكاة و الهروب من تسجيل البرنامج

ثالثا
ماذا الان ؟
نريد ان نربط البرنامج بهذا المسلسل بحيث انه عند تسجيل البرنامج يتأكد من مسلسل القرص الصلب و يطابقة مع كود التسجيل
فإذا اشتري اي عميل البرنامج يرسل لنا كود التسجيل ونرسل له كود التفعيل المرتبط بمسلسل القرص الخاص به
فإذا اخذه اي عميل اخر سيجد ان البرنامج لا يعمل لديه لان رقم المسلسل غير متطابق
لذا يجب في كل مرة يقلع بها البرنامج ان يتأكد من مطابقة مسلسل القرص الصلب
مع المخزن لديه ( اتركها للمبرمج) ولكن البرنامج مازال عرضه للسرقه فإذا
علم الكراكر اين يخزن مسلسل القرص الصلب فسيقوم بنقل المسلسل الخاص بقرصة
الي مكان التخزين وعنداقلاع البرنامج سيجد الرقمان متطابقان فأين الحل
الحل هنا فيما يسمي بالتشفير ولكن نعقد الموضوع برمته علي الكراكر سنقوم بتشفير المسلسل مرتان
الاولي تكون كود التسجيل والثانية هي كود التفعيل !
فإن اشتري العميل برنامجنا فسيرسل لنا كود التسجيل وببرنامج اخر لدينا يحمل
المعادلة العكسية للتشفير نستخرج رقم المسلسل الخاص بقرصة ثم نشفرة مرة
اخري بالطريقة الثانية ونرسل له كود التفعيل ( الكل اتلخبط صح؟)
علشان اوضح الموضوع اكثر هبسطه

مثلا لو فرضت ان رقم المسلسل كان 123456
وإستخدمت معادلة بسيطة جدا وهي إضافة رقم 5 الي قيمة المسلسل وطريقة اخري بحذف القيمة 6 من الرقم فيكون ناتج التشفير الاول هو
123456+5=123461 وهذا هو كود التسجيل الذي سيظهر للعميل
ويقوم العميل بدوره بإرسال الكود 123461 الينا فنقوم بمعادلة عكسية للتشفير
وهي حذف ال5 المضافة فيظهر لنا رقم المسلسل 123456 ثم بدورنا نحذف القيمة 6
من المسلسل فيصبح 123450 وهو كود التفعيل الذي سيستخدمه العميل لتفعيل
البرنامج
اما في البرنامج فعند كل اقلاع يطابق كود التسجيل مع كود التفعيل فإذا كان
كود التفعيل +6 -5 هو كود التسجيل يكون البرنامج سليما -------- حد فهم
حاجه؟؟

لو فهمتم اكمل

المهم ان طرق التشفير لازم تكون معقده الي اقصي درجة بحيث انه يستحيل علي الكراكر كسرها

وجاء دور المكتبة الثانية


Chilkat
وهي مكتبة تستخدم طرق خطيرة في التشفير وبها مميزات اخري كثيرة جدا جدا سنطرأ اليها لاحقا عندما نحتاجها
ولكن المهم الان هو التشفير
اولا نقوم بتنصيب البرنامج الخاص بها
ثم
هل تتذكرون الــ class التي قمنا بتصميمها؟
سنضيف اليها دالتان للتشفير احداهما لكود التسجيل والاخري لكود التفعيل
اول دالة هتعتمد علي طريقة الــ blowfish وهي طريقة فعالة لتشفير النصوص




كود:
Function cryp2(ByVal inp As String, ByVal i As Integer) As String
Dim crypt As New Chilkat.Crypt2()

Dim success As Boolean
success = crypt.UnlockComponent("Anything for 30-day trial")



crypt.CryptAlgorithm = "blowfish2"

' CipherMode may be "ecb", "cbc", or "cfb"
crypt.CipherMode = "cbc"

' KeyLength (in bits) may be a number between 32 and 448.
' 128-bits is usually sufficient. The KeyLength must be a
' multiple of 8.
crypt.KeyLength = 128

' The padding scheme determines the contents of the bytes
' that are added to pad the result to a multiple of the
' encryption algorithm's block size. Blowfish has a block
' size of 8 bytes, so encrypted output is always
' a multiple of 8.
crypt.PaddingScheme = 0

' EncodingMode specifies the encoding of the output for
' encryption, and the input for decryption.
' It may be "hex", "url", "base64", or "quoted-printable".
crypt.EncodingMode = "hex"

' An initialization vector is required if using CBC or CFB modes.
' ECB mode does not use an IV.
' The length of the IV is equal to the algorithm's block size.
' It is NOT equal to the length of the key.
Dim ivHex As String
ivHex = "0001020304050607"
crypt.SetEncodedIV(ivHex, "hex")

' The secret key must equal the size of the key. For
' 256-bit encryption, the binary secret key is 32 bytes.
' For 128-bit encryption, the binary secret key is 16 bytes.
Dim keyHex As String
keyHex = "000102030405060708090A0B0C0D0E0F"
crypt.SetEncodedKey(keyHex, "hex")


If i = 0 Then
Return (crypt.EncryptStringENC(inp))
Else
Return (crypt.DecryptStringENC(inp))
End If

End Function
فكما نلاحظ ان هذه الدالة تستقبل متغيران احداهما i
وهو كدليل استخدمته لكي اخبر الدالة ان النص القادم لها اما مشفر ويحتاج
لفك التشفير (عندما تكون i ب 1) او ان النص القادم لها حقيقي ويحتاج الي
تشفير (عندما تكون i ب 0)
والمتغير الاخر str هو النص القادم للدالة
اظن اللعبة وضحت؟؟
يبقي في كود البرنامج نفسه




كود:
dim c as new protect
dim s as string
s=c.getserial
dim es as string =c.cryp2(s,0)
وبكده يكون النص الناتج في es هو ناتج تشفير رقم مسلسل الهارد
طيب يفضل سؤال -لو كانت طريقة التشفير ثابتة يبقي اي حد هيقرأ الموضوع ده يقدر بكل سهولة يكسره
صح
لكن ركزوا في السطر ده من الدالة cryp2




كود:
keyHex = "000102030405060708090A0B0C0D0E0F"
الرقم ده بال hex ممكن نغيره لاي رقم عاوزينه وهيكون
ده المفتاح الخاص بينا وطبعا وقتها مش ممكن حد يعرف افتراضك للرقم ده ايه
بس المهم ان الرقم ده هو مفتاح سر التشفير


طريقة التشفير الثانية
الدالة



كود:
Function crypt_file(ByVal inp As String, ByVal i As Integer) As String
Dim crypt2 As New Chilkat.Crypt2()
crypt2.UnlockComponent("anything for 30-day trial")
crypt2.CryptAlgorithm = "aes"
crypt2.EncodingMode = "base64"
crypt2.KeyLength = 128
crypt2.SecretKey = crypt2.GenerateSecretKey("jsa2jack1@1!")

If i = 0 Then
Return (crypt2.EncryptStringENC(inp))
Else
Return (crypt2.DecryptStringENC(inp))
End If
End Function
وطبعا مش هشرح كتير لانها مثل السابقة تماما فقط تختلف طريقة التشفير المسمي هنا بــ AES وتستخدم i كدليل للتشفير او فك التشفير
والسطر
crypt2.SecretKey = crypt2.GenerateSecretKey("jsa2jack1@1!")
يمكن تغيير قيمته كما تشاؤون وهو من النوع النصي وسيكون هذا هو ايضا مفتاح الشفرة الثانية

الطريقتان السابقتان تعتمدان علي تقنية الــ salt في التشفير وعدد
المحاولات اللازم لفك هاتان الشفرتان هو قاموس يحتوي علي 85*10^35 كلمة اي
ما يعدل 8 شهور متواصل من العمل علي الحاسب لفك مفتاح
الشفرة!!!!!!!!!!!!!!!!!

والباقي في البرنامج طبعا عليكم

يبقي ملحوظة اخوية اخيرة للمبرمجين
لا تربطوا النسخة التجريبية لبرنامج بساعة الحاسب فهو اسلوب فاشل ولكن ان
اصررتم فهناك طريقة واحدة للحماية وهي ان تجعلوا برنامجكم يسجل كل مرة يغلق
بها وقت وتاريخ الاغلاق لتتأكدوا ان المستخدم لم يعبث في ساعة الحاسب
لإطالة النسخة التجريبية
اما عن رأيي الشخصي فأفضل اللجوء الي الــ timer وتكون النسخة تجريبية ل
مثلا 20 ساعة عمل ويسجل الــ timer كل دقيقة الوقت المستنفذ الحالي


المكتبتان مرفقتان روابط تحميلهما في الموضوع وتابعوني لان الموضوع مازال
كبيرا فمكتبة chilkat بها مميزات لا حصر لها ولكن الي الان اترككم تستمتعوا
بها
الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
تعلم كيف تحمي برامجك من السرقة من الصفر برجاء التثبيت (متجدد)
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-
» موسوعة في تعلم لغات البرمجة من الصفر إلى الإحتراف
»  تعلم انشاء المواقع ب html و css من الصفر الى الاحتراف
» تعلم الأنجليزية من الصفر الى الأحتراف فى شهر
»  تعلم انشاء المواقع ب html و css من الصفر الى الاحتراف
»  موسوعة في تعلم لغات البرمجة من الصفر إلى الإحتراف

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
منتديات اهل الحق :: منتديات الإبداع و التصميم :: منتدى لغات البرمجة-
انتقل الى: