الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشروع لصنع Keygen "طريقة تعتمد على رقم الهارد ديسك وتمنع النسخ الغير شرعي لبرنامجك"

رائج
بدأه tahasit في 2 مايو 2009 · 94 رد · 29,377 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه ،،

جئتكم اليوم بطريقة صناعة keygen لبرامجكم

الشرح :

الكل يعرف أن كل هارد ديسك له رمز معين يختلف عن البقية

ومن هنا نستطيع إستعمال هذا الرمز من أجل حماية برامجنا من النسخ الغير شرعي

حيث أننا سوف نقوم ببناء برنامج يولد كلمة سر خاصة بكل هارد ديسك أي

الرمز المعطى للزبون يعمل على حاسبه هو فقط

لا حظ الصورة :

post-145519-1241266628_thumb.png

post-145519-1241267153_thumb.png

في البداية سأرفق لكم الملف التنفيذي فقط

وإذا أعجبيكم الفكرة سنناقش معا طريقة القيام بذلك

تجدون البرنامج االإفتراضي مع برنامج توليد أرقام السر في المرفقات

في البداية إضغط الملف get

أنتظر ردودكم حول الفكرة

keygen_tahasit.rar

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 27 مايو 2009 في 16:49

1
986902102.jpg
#2

اخي الكريم بارك الله بك,إين ال Source؟

لا فائدة من البرنامج الذي وضعته إذا لم يتم وضع المصدر, وإلا سوف يتم الحذف.

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#3
Wael Dalloul كتب:
اخي الكريم بارك الله بك,إين ال Source؟

لا فائدة من البرنامج الذي وضعته إذا لم يتم وضع المصدر, وإلا سوف يتم الحذف.

السلام عليكم

طبعا أخي الكريم 'Wael Dalloul' سوف أضع الكود السورس

وأنا أضعه في كل مشاراكاتي إيمانا مني بضرورة مشاركةإخواني

في كل شاردة وواردة وطرح أي إشكال من أجل رقي المنتدىوتطوره

وأنا شخصيا واجهتني في العديد من المرات بعض المصاعب في مشاريعي

ولكن الإخوة في المنتدى حفظهم الله ورعاهم ذللو أمامي كل الصعاب

هذا هو المشروع أخي الكريم

key_gen_tahasit.rar

986902102.jpg
#4

نسيت أن أخبركم أن هناك عيب بسيط بالبرنامج وهو كالإتي :

عندما يدخل الزبون رقم السر الموافق لرقم الهارد ديسك فإن البرنامج سوف يقبله حتى وإن أصاف بعده أرقام

مثال :

إذا كان الرقم السري الموافق للهارد ديسك هو 1524622

فإن البرنامج سوف يقبل أية أرقام سوف تأتي بعد الكود مثل : 152462211200

غير أن هذا لا ينقص من فائدة البرنامج

أرجو من الإخوة محاولة معالجة المشكلة

986902102.jpg
#5

يمكنك استعمال المثال الموجود

/index.ph...st&p=930533

إعجاب الإنسان بنفسه دليل على صغر عقله

-----------------------------------------------------------------

رأس الحكمة مخافة الله

#6

السلام عليكم

لقد إطلعت على المشاركة التي أشرت إليها وهي رائعة لأن فيها أخذ وعطاء وبهذه الطريقة يصبح الصعب هينا وسهلا

والمثال المرفق فوق فكرة رائعة وهي قابلة للتطوير وبعد الإطلاع على المشاركة التي أشرت إليها خطر ببالي أن أطور الفكرة

ثم أطرحها في المنتدى

شكرا أخي maosalah

986902102.jpg
#7
tahasit كتب:
السلام عليكم

لقد إطلعت على المشاركة التي أشرت إليها وهي رائعة لأن فيها أخذ وعطاء وبهذه الطريقة يصبح الصعب هينا وسهلا

والمثال المرفق فوق فكرة رائعة وهي قابلة للتطوير وبعد الإطلاع على المشاركة التي أشرت إليها خطر ببالي أن أطور الفكرة

ثم أطرحها في المنتدى

شكرا أخي maosalah

فعلاً عمل رائع وجميل

ولكن ما رأيك إن تكون الحماية بالسيريال نومبر الحقيقي للهارد ديسك

اليك هذا المرفق واكمل ما تبقى فيه

إنه ينقصه فقط توليد الرقم التسلسلي المتناسب مع الرقم الحقيقي للهارد ديسك

لأن المشكلة في الحماية بالذي قدمته غير كافية وولا بد من تغيير رقم الهارد كلما داعت الضرور لتهيئته

ولهذا أفضل ان تكون الحماية بالرقم التسلسلي المولد عن رقم الهارد ديسك الحقيقي

أرجو تكملة المرفق واعادت تنزيله على المنتدى

_________________________.zip

#8

السلام عليكم ورحمة الله وبركاته

أولا هناك نقاط أحببت الإشارة إليها :

1- رقم الهارد ديسك المستعمل في مثالنا فوق يتغير كلما أعيد تنصيب النظام

2- المهم في الفكرة هو معرفة كيفية حماية تطبيقاتنا من العابثين

3- تستطيع التلاعب في المثال فوق كما تشاء يعني كل واحد يجعل نسخة خاصة به من خلال تغيير بعض العمليات

4-طبعا إستعمال الرقم الحقيقي للهارد ديسك أفضل ويغنيك عن مشاكل كثيرة قد تصادفك مع الزبائن ولكن صراحة أنا حاولت ولم أفلح لحد الساعة

ولكني سأستمر في المحاولة.

986902102.jpg
#9

السلام عليكم ورحمة الله وبركاتة

--------------------------------

احسنت جهداً اخى الكريم

الموضوع سبق التطرق له من قبل : طريقة قراءة كود اللوحة الام و حماية البرنامج بالكود, الحماية من الشكل xxxx-xxxx-xxxx-xxxx

وأود ان اشير وكما تعلمنا من قبل ان هذه البريمج يوضح Volume Serial Number وليس الرقم المتسلسل لذلك فأن المستخدم لو قام بنسخ البرنامج من الدريف C الى دريف اخر D مثلاً فإن الرقم بالتأكيد سوف يتغير

جهد رائع ومزيد من التقدم بإذن الله

Comming Soon

#10
Swift كتب:
السلام عليكم ورحمة الله وبركاتة

--------------------------------

احسنت جهداً اخى الكريم

الموضوع سبق التطرق له من قبل : طريقة قراءة كود اللوحة الام و حماية البرنامج بالكود, الحماية من الشكل xxxx-xxxx-xxxx-xxxx

وأود ان اشير وكما تعلمنا من قبل ان هذه البريمج يوضح Volume Serial Number وليس الرقم المتسلسل لذلك فأن المستخدم لو قام بنسخ البرنامج من الدريف C الى دريف اخر D مثلاً فإن الرقم بالتأكيد سوف يتغير

جهد رائع ومزيد من التقدم بإذن الله

شكرًا على التدخلات الأخ swift

لكن نحن لا نقصد برقم serial Number الخاص بجزء من القرص cأوdأوe

بل نقصد الهارد بصفة عامة لأن الهارد على ما أظن له رقم من قبل ان يتجزء وهذا الرقم لا يتغير حتى ولو جعلت فورمات للهارد بأكمله

أما الرقم الذي تشير له فهى يتغير من وحدة الى وحدة وكل ما جعلت فورمات للهارد تتغير هذه الأرقام

أظن أنك قد فهمت ما نقصده بالرقم الحقيقي للهارد ديسك

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

http://wa-01.yousendit.com/transfer.php?ac...ypt@hotmail.com

وجزاكم الله عنا كل خير

تم تعديل هذه المشاركة بواسطة medreg في 10 مايو 2009 في 10:29

#11

السلام عليكم ورحمة الله وبركاته

أخي الكريم Swift شكرا لك على التشجيع وحقيقة أنا لم أنتبه لوجود الموضوع فمعذرة لتكراره

وكما قال الأخ الكريم medreg نحن نسعى لأن يكون الرمز الحقيقي للهارد ديسك -الرمز المعطى من الصانع -

هو المستعمل في حماية البرنامج لتجنب العديد من المشاكل .

وأغتنم هذه الفرصة لأطرح هذا السؤال لأني لم أجد له حل :

في مشاركة الأخ medreg فوق دالة إستخراج رمز الهارد ديسك الحقيقي وهو من الشكل : AAA-AAA11111

1- ماهو نوع المعطيات هنا (حقيقي-صحيح-رمز .....)

2-كيف أستطيع التعامل مع جزء معين فقط من هذا الرمز ( إستثناء الأعداد المعرفة في النظام السداسي عشر وأخذ الأعداد الصحيحة فقط )

أرجو أن يكون قصدي واضحا.

986902102.jpg
#12

مشكور اخي Tahaset وبارك الله بك

#13

نعم أخى الكريم Medreg أفهم ما تقصدة جيداً ولذلك قد تم شرح عمل الدالة اللتى يحتويها البرنامج

اقتباس
وأود ان اشير وكما تعلمنا من قبل ان هذه البريمج يوضح Volume Serial Number وليس الرقم المتسلسل لذلك فأن المستخدم لو قام بنسخ البرنامج من الدريف C الى دريف اخر D مثلاً فإن الرقم بالتأكيد سوف يتغير

حسناً ليكن هذا الموضوع مفتوح للنقاش , نأمل ان يتم الوصول الى الرقم الحقيقى المعرف للHDD وليس VSN

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

أخى الكريم البريمج مرفق بالأعلى وغير ذلك هو نفسة البرنامج اللذى وضعة الأخ الكريم Tahasit

جهد رائع اخى Taha اتمنى لكم جميعاً التوفيق

تم تعديل هذه المشاركة بواسطة Swift في 12 مايو 2009 في 06:55 — السبب: تنسيق

Comming Soon

#14

السلام عليكــم ورحمـة الله وبركاتــه ،،

أشكر جميع الإخوة على إثراء الموضوع وكما يعلم الجميع فإن النقاش الجاد والنقد البناء يساعد كثيرا في حل أي مشكل

لقد تمكنت بحمد الله من إستعمال الرقم الحقيقي للهارد ديسك في الحماية

ولكن لا بد من بعض الشرح :

1- في مثالنا السابق إعتمدنا على رقم الهارد ديسك من أجل توليد كلمة سر موافقة له وجعلنا برنامجنا يتعرف على كلمة السر الموافقة لرقم

الهارد ديسك غير أن رقم الهارد ديسك لم يكن الرمز الحقيقي له بل كان يتغير كلما أعيد تثبيت النظام ومن دريفر إلى لآخر وهذا يتسبب بالعدبد

من المشاكل

2- وكما أشار الأخ الكريم Swiftقي أحد مشاركاته فإنه توجد في الحاسوب العديد من البصمات التي يمكن أن نستفيد منها كرقم اللوحة الأم والرمز الحقيقي للهارد ديسك والبيوس وهي لا تتغير لأنها معطاة من طرف الصانع

3- نفس المبدأ المطبق في مثالنا فوق سوف نطبقه الآن وإنما سوف نستعمل الرمز الحقيقي للهارد ديسك هذه المرة

4- دالة توليد الرمز الحقيقي للهارد ديسك موجودة في مشاركة الأخ medreg فوق وكل ما ينقصنا الآن هو تشفير هذا الرمز .

4- من أجل تشفير الرمز الحقيقي للهارد ديسك تلزمنا خوارزمية وتعتمد قوة كلمة السر على قوة هذه الخوارزمية

5- بعد تشفير الرمز الحقيقي للهارد ديسك نكون بهذا قد تحصلنا على برنامج الكايقن الإفتراضي وهو المسؤول عن إحضار الرمز وتشفيره فقط

ونتيجة التشفير سوف تكون كلمة السر لبرنامجنا .

6- بقي الآن أن نعرف برنامجنا الذي نريد تسويقه على البصمة المستخدمة في حمايته - في حالتنا رمز الهارد ديسك الحقيقي - من أجل ذلك لا بد أن نجعل برنامجنا قادر على إستخراج البصمة وإظهارها على حاسب الزبون الذي بدوره يتصل بصانع البرنامج من أجل أن يزوده بكلمة السر الموافقة له.

كما يجب أن يكون البرنامج قادر ا على فك كلمة السر المشفرة ومقارنتها بالبصمة المستعملة في الحماية يعني التحقق من موافقة كلمة السر المدخلة لنتيجة تشفير البصمة المستعملة.

أرجو أن يكون الشرح وافيا كما أنتظر من الإخوة توجيهي إن كنت مخطئا ففي النهاية نحن هنا من أجل أن نفيد ونستفيد

كما لا يفو تني أن أشكر الإخوة المشرفين والأعضاء على التشجيع فذلك يرفع الهمم ويجعلك تحس بقيمة عملك مهما كان بسيطا .-هذه وجهة نظري على الأقل-

شكرا مرة أخرى.

البرنامج الإفتراضي مع الكايقن في المرفقات وهو بحاجة لبعض التعديلات إرتئيت أن نعالجها معا

ملا حظات : في البرنامج الإفتراضي وعندما يظهر رمز الهارد ديسك وقبله فراغ هذا الفراغ يعتبر جزء من رمز الهارد ديسك لذلك يجب أخذه كما هو

وهذه إحدى المشاكل التي أنتظر أن نعالجها معا لا حظ الصورة

كلمة السر الناتجة عن هذا التشفير صعبة جدا وأحيانا تتطلب عملية -نسخ/لصق- لإحتوائها على رموز قد يصعب على البعض إيجادها

تستطيع التعديل في االسورس كما تشاء وكلما أطلت العملية الخاصة بالتشفير كلما أزدادت كلمة المرور صعوبة .

نستطيع أن نطبق نفس المبدأ على رمز اللوحة الأم وغيرها من FingerPrintكما قال الأخ الكريم Swift وكل ما يهم كيفية إستخراج البصمة وبعد

ذلك لن يقف شيئ في طريقك.

post-145519-1242230171_thumb.jpg

tahasit_k__v1.0.rar

تم تعديل هذه المشاركة بواسطة tahasit في 13 مايو 2009 في 19:07

986902102.jpg
#15

فعلا إنه عمل رائع

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

فعلاً إنها كلمة سر معقدة ولا أظن أن بإمكان المتعودين على كسر كلمة السر كسر هذه الكلمة إلى بمشقة الأنفس

جزاكم الله عنا كل خير

#16

السلام عليكم ورحمة الله وبركاته

نأتي الآن إلى إكمال مشروعنا حيث سوف نجعل مستعمل البرنامج يدخل كلمة السر مرة واحدة فقط أي أننا سوف نستعمل الريجيستري

في الوندوز.

كما أشعر أني تسرعت في طرح المشروع الأخير وأن الموضوع لم يأخذ حقه من النقاش فمعذرة للأعضاء الكرام ، لكن تأكدو أن ذلك نابع من

حبي مشاركة إخواني كل ما أعرف .

نعود الآن لموضوع الريجيستري - كما نعلم أن الريجيستري في الوندوز مهم جدا لبرامجنا وكثير من البرامج التي نتعامل معها يوميا وربما دون أن نشعر بذلك تعتمد عليه إعتمادا كليا وهناك برامج مبنية عليه فهو يقدم الكثير من الخدمات لبرنامجنا ويسهل على المستعمل العمل مع البرنامج

كل من لديه فكرة حول الموضوع فليشاركنا بها من أجل أن نستفيد من كل جوانب الموضوع.

986902102.jpg
#17

جميل اخي tahasit على كل حال هذه ملاحظاتي :

* الدالة المستعملة في نتاج كلمة السر بسيطة جدا من السهل القيام بالعملية العكسية حاول استعمال ال Byte في مكان ال String .

/index.ph...st&p=930533

* استعمل ال Trim لتفادي الفرغات في :

edit2.Text:=get_password(edit1.Text);

لكي تصبح :

edit2.Text:=get_password(Trim(edit1.Text));

نصيحة لاتجعل الإدخل و التاكيد مباشر في مكون ال edit وذلك لتفادي الكسر و Jump و Nop كثيرا ,

فيما يخص الريجستري هذا تطبيق صغير عملته للاخت هبة الله يمكنك ان تستعمله او تاخذ بافكاره .

/index.ph...st&p=928937

المهم كن متاكد انه لاتوجد حماية 100% فالكمال لله سبحانه و تعالى .

والله المستعان

تم تعديل هذه المشاركة بواسطة mohfa في 18 مايو 2009 في 03:31

عزيزي :

لاتنسى ان تصلي على حبيبنا و شفيعنا يوم لا ينفع مال ولا بنون .

فاللهمّ صّل وسّلم على سيدي و شفيعي وحبيبي محمد عليك الف صلاة وازكى تسليم

*****

2_header.png

#18

السلام عليكم ورحمة الله

بارك الله فيك أخي الكريم mohfa كلامك صحيح وملاحظاتك جيدة

بهذا أخي الكريم نكون قد تخلصنا من مشكل الفراغات وسوف أطلع على المشاركات التي أشرت إليها بخصوص الريجيستري

فقط أريد أن أوضح أمرا قبل المتابعة وهو أننا هنا نحاول توضيح طرق عمل حماية بسيطة للبرنامج وأنا أعلم أن العديد من البرامج

التي تقوم على مبدأ الهندسة العكسية يمكن أن تكسر الحماية بل تمكنك حتى من تغيير العديد من وضائف البرنامج ، ماأردت قوله هو

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

وأرجو تواصلك معنا .

986902102.jpg
#20

بارك الله فيك على الموضوع القيم , ساضعه في فهرس الدروس .

شكرا .

#21

شكرا لكم جميعا إخواني المشرفين والأعضاء وفقنا الله وإياكم لما يحب ويرضى

986902102.jpg
#22

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

تم تعديل هذه المشاركة بواسطة decompiler في 18 مايو 2009 في 17:00

#23

السلام عليكــم ورحمـة الله وبركاتــه ،،

لقد إطلعت على الموضوع الذي أشار إليه الأخ mohfa وهو مثال رائع -بارك الله فيك - ولكني رأيت أن نبدأ

الموضوع من الصفر ثم نكمل من أجل أن يستفيد الجميع

نبدأ الآن مع كيفية خلق المفتاح الخاص ببرنامجنا والذي سوف يعود إليه للتحقق كلما أعيد تشغيله

أولا نضيف الوحدة : Registry في القسم Uses

وفي الكو التالي نعرف متغير من نوع Tregistry

ثم نقوم بفتح المفتاح الفرعي الذي نريد أن نستخدمه ومن ثم كتابة المفتاح الخاص ببرنامجنا

procedure TForm1.Button1Click(Sender: TObject);
var
rega: TREgistry;
begin
rega:=TregistrY.Create;
rega.RootKey:=HKEY_CURRENT_USER;
try
rega.OpenKey('Software\Microsoft\arabteam2000',true);
except
rega.Free;
end;
end;

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

وسوف تجدون مفتاحا جديدا تحت الاسم الذي وضعناه فوق

الآن سوف نقوم بكتابة قيمة ما إلى المفتاح الذي قمنا بإنشاءه ومن أجل ذلك نضيف للكود الأول تعليمة ليقوم بقراءة القيمة من إديت

وكتابتها في المفتاح الذي أنشأناه

procedure TForm1.Button1Click(Sender: TObject);
var
rega: TREgistry;
begin
rega:=TregistrY.Create;
rega.RootKey:=HKEY_CURRENT_USER;
try
rega.OpenKey('Software\Microsoft\arabteam2000',true);
rega.WriteString('tahasit',edit1.Text);
except
rega.Free;
end;
end;

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

reg.rar

تم تعديل هذه المشاركة بواسطة tahasit في 18 مايو 2009 في 17:52

986902102.jpg
#24

اخي tahasit لماذا حررت الريجستري بعد وجوب توفر ال exception انت تقول لبرنامجك إذا كان هناك exception فحرر ال ال rega والا .....

اذا اردت استعمال ال try ...except وهو جيد لتفادي الاخطاء فف مثالك ضف double try او

try
      .......
         // if for exemple
            try
             ......
            except
               ....( error )......
            end;

   finally
    .....( free your abject )
   end;

عزيزي :

لاتنسى ان تصلي على حبيبنا و شفيعنا يوم لا ينفع مال ولا بنون .

فاللهمّ صّل وسّلم على سيدي و شفيعي وحبيبي محمد عليك الف صلاة وازكى تسليم

*****

2_header.png

#25

أنت محق أخي الكريم mohfa المقابلة مع الإستثناء في الكود فوق غير كاملة وما يلزمنا فوق هو كود للتحقق من وجود المفتاح - إن لم يكن موجودا فإنه يقوم بإنشائه وإن كان موجودا فإنه يستعمله -

إن أمكنك أخي الكريم mohfa أن تقوم بالتعديل على المثال المرفق حسب رؤيتك للموضوع وترفعه لنا حتى نعالج الأمر معا

سرني تعقيبك كثيرا وتذكر بأني حديث في التعامل مع الريجيستري ومثل هذه الردود تساعد الكثير منا في الإلمام بكل الأحتمالات والأشكال

التي يمكن أن يسير عليها الموضوع. شكرا

تم تعديل هذه المشاركة بواسطة tahasit في 18 مايو 2009 في 19:24

986902102.jpg

مواضيع مشابهة