تعلم صناعة الكراك بنفسك! -الدرس الثاني-

اذهب الى الأسفل

تعلم صناعة الكراك بنفسك! -الدرس الثاني-

مُساهمة من طرف عاشق يامي يوغي في السبت ديسمبر 08, 2007 2:11 pm

السلام عليكم ورحمة الله وبركاته...
أهلاً بكم إلى الدرس الثاني من "تعلم صناعة الكراك بنفسك" والذي أعدّه بنفسي. كما وعدتكم ها هو الدرس الثاني، وأأسف لأنني تأخرت في تقديمه لكن الدراسة تأخذ معظم وقتي! أعرف أنني وعدتكم في الدرس الأول أنني سأقوم بالدرس الثاني بتعليمكم كيف نكسر حماية برنامج ونصنع كراك له، لكنني قررت أن أؤجل هذا الأمر إلى الدرس الثالث إن شاء الله؛ لأنني أريد أن أعلمكم في هذا الدرس كيف نعمل كراكينغ للتعديل على البرامج وتغيّير بعض الأمور فيها، تذكروا أن الكراك ليس فقط لتسجيل البرامج التي تطالب بإسم مستخدم وكلمة مرور أو سيريال، ولكن أيضاً لتعديل بعض الأوامر في البرامج، وقد ذكرت لكم هذا في الدرس الأول.
قبل أن نبدأ أفضّل أن تراجعوا الدرس الأول لإنعاش ذاكرتكم لتسهيل العمل في الدرس الثاني، ولمن فاته الدرس الأول تجده هنا:
تعلم صناعة الكراك بنفسك! -الدرس الأول-

***الرجاء الانتظار والصبر حتى تحميل الصور في الدرس***

الدرس الثاني:

1. فكرة سريعة عن الدرس الثاني:
درسنا اليوم يتناول تطبيقا عمليًا بسيطًا لكنه سيقويّ الأساسيات لديكم. سنقوم في هذا الدرس بالتعديل على إحدى أوامر برنامج المذّكرة في الويندوز Notepad والذي يعرفه الجميع بلا شك. قد تقول ما الفائدة من هذا التعديل؟! حسناً، لن تكون له فائدة كبيرة لكنه سيكون مثال جيّد لتعليم كيفية التعديل على أوامر البرامج بواسطة "الكراكينغ" وفهم طريقة عمل البرامج.

2. معلومات عن البرنامج المستهدف:
البرنامج المستهدف: notepad.exe
الهدف : إلغاء رسالة الخطا التي نتلقاها عند محاولة فتح مستند كبير بواسطة المفكرة.
مكان الملف: c:\windows\notepad.exe
لإصدارات ويندوز: Windows 98, Windows ME
أما بالنسبة لمستخدمي Windows XP أو Windows 2000 فبرنامج المفكرة مختلف قليلاً،
لذا نزلّوا نفس الملف من هنا: Notepad حمل البرنامج بعمل نقرة يمين عليه واختيار Save Target As أو حفظ المسار. (*يجب استخدام هذه الطريقة!)
*وأفضل لو أن الجميع ينزّل نفس النسخة من الرابط في الأعلى كي نكون متأكدين أننا نعمل على نفس النسخة.

3. ما البرامج التي نحتاجها للدرس الثاني:
1. Notepad: برنامج المفكرة Notepad كما ذكرت في الأعلى، وأفضل لو أن الجميع ينزّل نفس النسخة من الرابط في الأعلى كي نكون متأكدين أننا نستخدم نفس النسخة. حمل البرنامج بعمل نقرة يمين عليه واختيار Save Target As أو حفظ المسار. (*يجب استخدام هذه الطريقة!)

2. Win32dasm: تكلمت عنه وشرحته بالتفصيل في الدرس الأول، برنامج رائع ومهم، يقوم بعدة عمليات مثل فك تجميع التطبيق أو البرنامج وعدة أمور أخرى. حمل البرنامج بعمل نقرة يمين عليه واختيار Save Target As أو حفظ المسار. (*يجب استخدام هذه الطريقة!)

3. Hiew 600: تكلمت عنه في الدرس الأول أيضاً، برنامج رائع وظيفته تشبه وظيفة البرنامج السابق لكنه يعمل تحت بيئة الDOS ومن إحدى ميزاته السماح للكراكر بتعديل شفرة التطبيق بطريقة برمجية وعرض الملف بصيغة ASCII أو Hex أو Assembly. اسم البرنامج يرمز إلى *********************************** View أي وجهة نظر الهاكر!
و الرقم 600 يدل على الإصدار السادس منه وليس الست مئة!
حمل البرنامج بعمل نقرة يمين عليه واختيار Save Target As أو حفظ المسار. (*يجب استخدام هذه الطريقة!)

4. ملاحظات مهمة:
*ملاحظة 1: قم بعمل نسخة احتياطية من المفكرة وأي ملف تريد أن تقوم بكسره لتفادي المشاكل، فإذا خرب ذلك الملف احذفه واسترجع النسخة السليمة.
*ملاحظة 2 : المفكرة برنامج لا يعتمد لتشغيله على أي ملف داعم من مثل .dll أو .ocx الخ... لذا من الممكن نسخه على سطح المكتب لتسهيل العمل، لكن البرامج الكبيرة أو أي برنامج يأتي مع ملفات داعمة مثل.dll فيجب وضع النسخة ضمن مجلد البرنامج نفسه كي يعمل.

5. خطوات العمل – المرحلة الأولى- :
نتوكل على الله سبحانه وتعالى ونبدأ،
* نزّل برنامج المفكرة من الرابط السابق، انسخ ملف المفكرة Notepad إلى سطح المكتب لتسهيل العمل، وتأكد من أن لديك نسخة احتياطية منه.

* قم بفك الضغط عن برنامج Win32dasm وضع جميع ملفاته في مجلد واحد لنسمه مثلاً Win32dasm ونضعه على سطح المكتب لتسهيل عملنا.

* افتح برنامج Win32dasm واختر من القائمة في الأعلى Disassembler>Open File to Disassemble.. أو اضغط على أول أيقونة من على جهة اليسار وهي Open File to Disassemble، اختر ملف المفكرة الذي وضعته على سطح المكتب وانقر على open.

* سيقوم برنامج Win32dasm الآن بمعالجة شفرة برنامج المفكرة، لاحظ أن المعالجة لن تستغرق وقتاً طويلاً وذالك لأن برنامج المفكرة صغير، لكن مع البرامج والألعاب الكبيرة فإنه سيستغرق وقتاً أطول. عند الانتهاء سيكون لديك ما يلي على الشاشة:


* ما هذه السطور الكثيرة والمعقدة ؟! هذه هي الشفرة الخاصة ببرنامج "المفكرة"، والآن مهمتنا هي التخلص من رسالة الخطأ التي تظهر لنا عند محاولتنا فتح مستند كبير نسبياً بها.
* انتبهوا الآن إلى هذه النقطة جيداً، سنقوم الآن باستخدام الأسلوب المتّبع مع جميع البرامج التي تظهر رسائل عند ادخال اسم مستخدم أو رقم سري أو تسلسلس (سيريال) أو أي رسالة تصدر من برنامج. ننتقل إلى المرحلة الثانية.

6. خطوات العمل – المرحلة الثانية- :
* نفتح ملف المفكرة الذي وضعناه على سطح المكتب ثم نختار File>Open . ستظهر لنا نافذة جديدة، في أسفل النافذة عند جملة Files of type نختار All Files وذالك كي نتمكن من فتح مستندWord . اختر ملف Word أو أي مستند كبير حجمه يفوق ال100 KB وثم اختر Open.
* سنحصل الآن على رسالة الخطأ التي تقول “This file is too large for Notepad to open. Would you like to use WordPad to read this file?”
ما تقوله الرسالة هو "أن الملف التي تحاول فتحه كبير ولا يمكن فتحه بواسطة المفكرة، هل تريد فتحه بواسطة برنامج "الدفتر" WordPad؟"

* الطريقة المتبّعة هي أن نقوم بحفظ نص أي رسالة خطأ أو أي رسالة نتلقّاه عند محاولة ادخال الرقم التسلسلي. وفي هذه الحالة نحن أمام رسالة نريد التخلص منها، لذا نقوم بحفظ نص الرسالة أو نسجلها على ورقة أمامنا كي لا ننساها ثم نغلق الرسالة بالنقر على No.


*نعود الآن إلى برنامج Win32dasm، سنقوم الآن بالنقر على زر “Strn Rf” الموجود بجانب زر الطبعة في أقصى اليمين، وكما أخبرتكم في الدرس الأول فإن هذا الزر يحتوي على البيانات التي تدخل في تكوين البرنامج، كما يحتوي أيضاً على كافة الرسائل التي يظهرها البرنامج للمستخدم. ستظهر لنا الآن نافذة جديدة.

*الآن ما سنقوم به هو البحث ضمن تلك القائمة عن تلك الرسالة التي ظهرت لنا عندما حاولنا فتح مسنتد كبير بواسطة المفكرة، والتي قمنا بحفظها.


*نقوم الآن بالبحث عن الرسالة وهي “This file is too large for Notepad to open…” فننقر عليها مرتين ثم نفلق النافذة بالنقر على على Close.

*كما نرى فإننا الآن في منطقة أخرى من الشفرة وهي المنطقة التي انطلق منها الأمر لتفعيل الخطأ وهي كما يلي:


* أصبح الأمر حماسياً أليس كذالك ؟! الآن عليك إدراك وفهم الأمر التالي: "في جميع هذه الأنواع من الحماية يقوم البرنامج بعمل مقارنة بين الحدث الذي جرى والإجراء الذي هو مبرمج على التصرف وفقا له في حال وقوع هذا الحدث، وهذا الأمر ينطبق على البرامج التي تطالب بكلمة مستخدم أو رقم تسلسلي للتسجيل لكن الفرق الوحيد يكمن في قيام المبرمج بوضع بعض الحواجز في الطريق لعرقلة سير عمل الكراكر. والحدث هنا هو عمل مقارنة بين قيمتين للتحقق من أن حجم المستند لا يفوق الحجم الذي يستطيع برنامج المفكرة فتحه، فإن كان حجمه يفوق الحجم المحدد فإن الشفرة ستأمر البرنامج بالقفز بواسطة إحدى أوامر القفزjump (والتي تحدثت عنها بالتفصيل في الدرس الأول) إلى منطقة رسالة الخطأ فتظهر لنا الرسالة."

* الآن برأيك ما هو الأمر الي يجعل البرنامج يستدعي تلك الرسالة، هل هو أمر CALL أو JMP أو CMP؟! دقق قليلاً يا عزيزي وسترى أنني قلت أن البرنامج سيقوم بإجراء مقارنة، يعني أن هناك أمر مقارنة والذي غالباً ما يتبع بإحدى أوامر القفز كما ذكرت لكم سابقاً، لكن يجب أن يكون هناك أمر استدعاء CALL لاستدعاء عنوان الرسالة. إذاً سيكون هناك أمر CALLأي استدعاء ثم أمر CMPأي مقارنة يتبع بإحدى أوامر القفزJMP .
إذا كنت قد نسيت الأوامر فراجعها في الدرس الأول.

*لكننا نواجه فرقاً بسيطاً جداً هنا، وهو أن هذه الرسالة صدرت نتيجة عدم توافق في حجم محدد وليس نتيجة إدخال معلومات تسجيل خاطئة كرقم تسلسلي خاطئ.

* إذاً ماذا نفعل الآن؟! هل تذكر زر Imported Functions الذي تحدثت عنه سابقاً، يقوم هذا الزر باستدعاء قائمة الوظائف المستوردة من نظام التشغيل إلى البرنامج. نقوم بالضغط على هذا الزر وسنحصل على شاشة تحتوي على هذه الوظائف.


* تذكّر أننا حصلنا على "صندوق رسالة خطأ" يعني بالإنجليزي “Message Box”. إذاً سنبحث الآن عن وظيفة اسمها USER32.MessageBoxA ، هذه الوظيفة هي واحدة من أهم وأشهر الوظائف في الWindows وهي واحدة من أهم الوظائف للكراكرز لأن هذه الوظيفة ببساطة هي المسؤولة عن استدعاء "صناديق الرسائل" لعرض الرسائل التي يظهرها البرنامج، يعني أنه إذا أراد أي برنامج أن بعرض رسالة خطأ عليه أن يستدعي وظيفة USER32.MessageBoxA من نظام التشغيل كي يتمكن من عرض الرسالة التي يريد . وبرنامج المفكرة هنا يقوم باستدعاء هذه الوظيفة من الWindows لعرض رسالة الخطأ التي ظهرت لنا.

* قد تتسائل الآن وتقول لماذا ذهبنا إلى مكان رسالة الخطأ أولاً ثم إلى مكان الوظيفة ولم نذهب مباشرةً إلى مكان الوظيفة؟! الجواب بسيط؛ وهو أن برنامج المفكرة يقوم باستدعاء العديد من الرسائل ومن الصعب البحث في جميعها للحصول على ما نريد، لذا كان علينا أولاً أن نجد المكان الذي ظهرت منه رسالة الخطأ والتي دلّتنا إلى الوظيفة، وإذا حاولت وفتحت برنامج المفكرة من جديد في برنامج Win32dasm وذهبت مباشرةً إلى مكان الوظيفة USER32.MessageBoxA من دون أن تذهب أولاً إلى مكان رسالة الخطأ فإنك ستكون في المكان الخطأ! هل فهمت؟! إذا لم تفهم ما أعنيه فلا تترد في أن تسألني!

* نحن الآن في المنطقة الصحيحة والتي انطلقت منها رسالة الخطأ، وكما ذكرت سابقاً فإن هناك أمر مقارنة CMP ثم أمر قفز:


*دقق وستجد أنه يوجد أمر استدعاء، ثم أمر مقارنة متبوع بأمر قفز:
Call Dword ptr [004064B8]
cmp eax, 00000006
00403112jne
سنصل أولاً إلى أمر النداء الذي يستدعي صندوق الرسالة MessageBoxA باستخدام وظيفة USER32.MessageBoxA ، ثم سيقوم برنامج المفكرة بعمل مقارنة وأخيراً سيعطي أمر قفز الذي يقفز إلى مكان يعطينا رسالة الخطأ. وهو يعني أنه إن لم تكن القيمة صحيحة (وفي هذه الحالة إن لم يكن حجم المستند أصغر من الحجم المحدد) اقفز الى العنوان رقم 00403112. سنقوم الآن بالتعديل على الشفرة لإزالة أمر استدعاء صندوق الرسالة وإزالة أمر القفز الذي يعطينا رسالة الخطأ، وبالتالي سيقوم برنامج المفكرة باستدعاء برنامج الWordPad مباشرةً من دون أن يظهر لنا رسالة الخطا!

* نحن الآن موجودين على أمر الاستدعاء في برنامج Win32dasm، وإن لم تكن عليه فتحرك في الشفرة حتى تصبح على سطر أمر النداء بحيث يصبح السطر الأزرق على أمر الاستدعاء، والآن أنظر جيداً أسفل الشاشة وستجد شريط الحالة (هل تذكر في الدرس الأول أنني أخبرتك بأهمية هذا الشريط؟! ).

* هل ترى الكلام المكتوب في شريط الحالة:
Line:5093 Pg 66 of 122 Code Data @:0040305C @Offset 0000305Ch in File…
كل ما سنحتاج إليه من هذا السطر هو الرقم الموجود بعد الOffset وهو 0000305C، وهو رقم مختلف من سطر لآخر وهو عبارة عن عنوان لأي أمر، وفي هذه الحالة هو عنوان أمر الاستدعاء. وبالنسبة للحرف ""h فهو لا يهمنا لأنه ليس إلا دلالة على أنها أرقام بلغة الهكس Hex والتي تحدثت عنها سابقاً. نسجل هذا الرقم على ورقة، ثم ننزل إلى سطر أمر القفز بحيث يصبح السطر الأزرق عليه ونأخذ رقم الOffset الخاص به وهو 00003065.

* الآن عرفنا ما الذي سنقوم به، نغلق برنامج Win32dasm وعندما يظهر لك رسالة الإغلاق اختر Yes لأننا لا نحتاج إلى حفظ شفرة برنامج المفكرة. ثم نقوم بفك الضغط عن برنامج Hiew600 ونضعه في مجلّد على سطح المكتب نسميه Hiew600، ثم نقوم بفتح الملف Hiew.exe فتظهر لنا شاشة في بيئة الDOS. كما أخبرتكم سابقاً فإن هذا البرنامج يعمل تحت بيئة الDOS ومن إحدى ميزاته السماح للكراكر بتعديل شفرة التطبيق، وهو ليس معقداً فلا تفزع لأنه يعمل في الDOS!


7. خطوات العمل –ا لمرحلة الثالثة- :
* لا تخف من كل هذه الرموز المعقّدة لأننا لن نحتاجها كلها!

* سنقوم الآن بالتعديل على الشفرة لإزالة أمر استدعاء رسالة الخطأ وإزالة أمر القفز وبالتالي عند محاولة فتح مسنتد كبير سيقوم برنامج المفكرة Notepad باستدعاء برنامج الدفتر WordPad مباشرة من دون إظهار رسالة الخطأ تلك!

* في برنامج Hiew، استخدم أسهم الكيبورد كي تصل إلى الأعلى عند النقطتين، اضغط على Enter وستصبح في سطح المكتب، انزل إلى الأسفل حتى تجد NOTEPAD.EXE اضغط بالEnter عليه وستصبح داخل شفرة برنامج المفكرة.

* في برنامج Hiew، اضغط على F4 من على الكيبورد واختر من قائمة الModes (الوضعيات) التي ستظهر الاختيار“Decode”. ستصبح الرموز بلغة الأسملي Assembly وهي اللغة التي تظهر الرموز فيها في برنامج Win32dasm أيضاً. وعلى فكرة ممكن كبس Enter فقط للتنقل بين بين الModes المختلفة.

* اضغط على F5 وسيصبح بإمكانك ادخال عنوان Offeset. أدخل أول Offset حصلنا عليه والخاص بأمر الستدعاء وهو 0000305C.
* ملاحظة: تأكد من أنك أغلقت برنامج Win32dasm وإلا ستظهر لك رسالة خطأ ولن تستطيع التعديل على الشفرة لأن برنامج Hiew سيجد أن برنامج المفكرة يستخدمه برنامج آخر وهو Win32dasm. في الحقيقة إذا كان برنامج Win32dasm مفتوحاً من دون أن يكون يعالج شفرة برنامج المفكرة فلن تكون هناك أي مشكلة!


*أصبحنا الآن في مكان أمر الاستدعاء، سنقوم الآن بتعديل الشفرة بواحدة من الطريقتين التاليتين:-

* الطريقة 1: اسم هذه الطريقة هو “Register Modifying” أي "تعديل الرجيستر"، وهي الطريقة المفضلة. اضغط على F3 وسيصبح بإمكانك التعديل على الشفرة، أدخل التالي وسأشرح لك لاحقاً: 404840484048. ثم اضغط على F9 لاعتماد التعديل وتحديث الشفرة. الآن سنفعل الأمر ذاته لأمر القفز، اضغط على F5 وسيصبح بإمكانك ادخال عنوان Offeset. أدخل ثانيOffset حصلنا عليه والخاص بأمر القفز وهو 00003065. اضغط على F3 وسيصبح بإمكانك التعديل على الشفرة، أدخل التالي وسأشرح لك لاحقاً:
404840484048. ثم اضغط على F9 لاعتماد التعديل وتحديث الشفرة، اضغط على F10 لإغلاق البرنامج. افتح الآن برنامج المفكرة الموجود على سطح المكتب والذي عدّلنا عليه، جرّب أن تفتح بواستطه مستند يفوق حجمه ال100 KB، ما الذي يحدث؟! استدعى برنامج المفكرة Notepad برنامج الدفتر WordPad مباشرة لفتح المستند من دون أن يظهر لنا رسالة الخطأ المزعجة!


* الطريقة 2: اسم هذه الطريقة هو “nop” أي "لا عملية" وهي طريقة مستخدمة كثيراً لكن لها سيئاتها أحياناً وسأشرح لك لاحقاً لماذا. اتبع نفس الخطوات السابقة حتى تصبح عند أمر الاستدعاء، اضغط على F3 وسيصبح بإمكانك التعديل على الشفرة، أدخل التالي وسأشرح لك لاحقاً: 909090909090. اذهب إلى سطر أمر القفز كما ذكرت في الخطوات السابقة، ثم اضغط على F3 وسيصبح بإمكانك التعديل على الشفرة، أدخل التالي وسأشرح لك لاحقاً: 909090909090. افتح الآن برنامج المفكرة الموجود على سطح المكتب والذي عدّلنا عليه، جرّب أن تفتح بواستطه مستند يفوق حجمه ال100 KB، ما الذي يحدث، استدعى برنامج المفكرة Notepad برنامج الدفتر WordPad مباشرة لفتح المستند من دون أن يظهر لنا رسالة الخطأ المزعجة!


* بقي الآن أن أشرح لكم ما حدث. حان الوقت كي نتعلم بعضاً من لغة الHex:
في لغة الهكس Hex، كل من الأوامر أو بالأحرى الأرقام التالية لها معنى خاص وعمل خاص بها:
40 ------< أضف إلى ال eax (inc eax)
48 ------< أنقص من ال eax (dec eax)
90 ------< لا شيء يحدث (nop)
كلمة “inc” تعني “increase” أي أضف أو زيادة، وكلمة “dec” تعني “decrease” أي أنقص أو تخفيض.
في الطريقة الأولى، قمنا عند أمري الاستدعاء والقفز بزيادة الرجيستر “eax” بقيمة 1 ومباشرة بعدها قمنا تنخفيضها بقيمة 1 أيضاً، فتكوّن عندنا 404840484048، وفي النهاية بقي الحال كما هو وكأنك تقول "ضع 1 وخذ 1" وهذه الطريقة أزالت أمر الاستدعاء Call وأمر القفز Jne وبالتالي لم تظهر رسالة الخطأ!
وفي الطريقة الثانية، قمنا بإلغاء أمريّ الاستدعاء والقفز بإدخال أمر الnop أي "لا عملية"، يعني "لا تنفذ الأمر"، وبالتالي لم ينفّذ أمر الاستدعاء أو أمر القفز و بالتالي لم تظهر رسالة الخطأ!

* والسؤال الآن لماذا قلت أن الطريقة الأولى وهي "تعديل الريجستر" أفضل من الطريقة الثانية وهي "لا عملية"؟!
الجواب هو أن بعض البرامج تبحث داخل شفرتها لترى إن كان هناك أرقام 90 أي أوامر إلغاء العملية “nop”، وإن وجدت أيّ منها فلن يعمل البرنامج! لذا من الأفضل استخدام الطريقة الأولى في مثل هذه الحالات! وعلى فكرة برنامج المفكرة لا يقوم بهذا البحث لذا يمكن استخدام أي من الطريقتين!

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

9. ختاماً...:
رائع، لقد نجحنا في عمل كراكينغ لأول برنامج لنا! مبروك عليك، لقد دخلت عالم الكركينغ وتعلّمت الأساسيات! هل أحسست الآن ببعض من قوة وتحكّم الكراكينغ؟! أنا متأكد من ذالك! لكن الطريق ما زالت طويلة أمامك. المهم أن تكون قد فهمت هذا الدرس جيداً لأنه سيساعدنا كثيراً في الدرس القادم! إن شاء الله في الدرس القادم سنتعلم كيف نكسر حماية برنامج ونصنع كراك له، لكن قد أتأخر حتى أنشر الدرس الثالث بسبب الدراسة وضيق الوقت!
أنا بانتظار ردودكم ورآرائكم، ولا تنسونا من الدعاء!
avatar
عاشق يامي يوغي
المدير الصاحب اكبير
المدير الصاحب اكبير

ذكر عدد الرسائل : 141
العمر : 25
العمل/الترفيه : طالب
المزاج : احب الرياضة والقرائة والمطالعة
تاريخ التسجيل : 04/12/2007

معاينة صفحة البيانات الشخصي للعضو

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى