بسم الله الرحمن الرحيم,

 

في بعض المقالات السابقة في سلسلة الهندسة العكسية, استطعنا تطبيق ما تعلمناه من مفاهيم و استخدام أدوات على برنامج من برمجتنا, كما استطعنا أيضا التعديل على أحد البرامج التجارية, و لكن نحن جدد في علم الهندسة العكسية, و من أهم الصفات التي تكون خبراتنا و قدراتنا في الهندسة العكسية هي كثرة التطبيق و التدرب على هذا العلم, هل سنظل في كل مرة نريد أن نطبق الهندسة العكسية نقوم ببرمجة برنامج جديد؟ أم سنظل بالساعات نبحث عن برنامج تجاري و يمكن عن طريق الخطأ أن نقع في مشكلة قانونية و ننتهك بعض القوانين الخاصة بشركة ما.

 

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

برامج الـCrackme يمكن أن نعتبرها برامج برمجت خصيصا لتحاكي سبل الحماية الرقمية المستخدمة في البرامج التجارية فقط لا غير, فتلك البرامج لا نفع منها ولا ضرر غير أنها تحديات برمجية صغير تتحداك أن تكسر حمايتها و تستطيع الوصول الى شئ ما بداخلها.

هنالك الكثير من الجهات تدعم مثل تلك البرامج, مثلا شركة ESET, نعم تلك الشركة صاحبة واحد من أشهر برامج مكافحة الملفات الضارة في الاسواق NOD 32 protection kit, تقوم كل فترة بطرح برنامج Crackme و تقوم بوضع جائزة للشخص الذي يستطيع كسر حماية تلك البرامج, كما تقوم شركات أخرى بتعيين موظفين من خلال طرح بعض برامج Crackme و أوائل الناس القادرة على كسر حمايات تلك البرامج يكسبون وظيفة في الشركة, مثل شركة FireEye و مسابقتها FLARE, سأقوم بوضع رابط لتلك المسابقة في جزء المراجع في آخر المقال.

و لكن كل تلك المسابقات هي مراحل متقدمة في الحماية الرقمية و الهندسة العكسية, ماذا عن المبتدئين الجدد الذين يريدون التدرب على بعض الأمثلة البسيطة و السهلة ليتمكنوا من تعلم و تطبيق ما تعلموه على تلك البرامج؟

لهذا الغرض قامت مجموعة من مهووسي الهندسة العكسية بعمل موقع كل ما يقوم به هو استضافة برامج Crackme و تقييمها, أي شخص أو شركة ترغب بمشاركة برنامج Crackme من برمجتها مع الآخرين, يمكنها وضع برامجها على هذا الموقع و يستطيع الناس تنزيل تلك البرامج و العمل على كسر حمايتها و مشاركة الآخرين في حلولها, هذا الموقع هو Crackmes.de سأضع رابط لهذا الموقع في جزء المراجع.

هنا نأتي لسؤال مهم جدا, كيف يستطيع شخص أثبات أنه تمكن من كسر حماية برنامج Crackme, ماذا تعني جملة “استطعت أن أحل هذا البرنامج” في الهندسة العكسية؟

هنا نتطرق لثلاث مصطلحات مهمة جدا, و أعتقد أننا جميعا سمعنا على الأقل بواحد من تلك المصطلحات ان لم نكن سمعنا بها كلها, تلك المصطلحات هي Keygen, Crack, Patch فما الذي يعنيه كل منهم و ما الفرق بينهم؟

برامج الـ Keygen: اختصار لـ Key Generator أو مولدات مفاتيح, و هي برامج يقوم الشخص الذي يطبق الهندسة العكسية بكتابتها بعد تمكنه من كسر و فهم و دراسة الحماية المراد كسرها, تلك البرامج يمكن أن تأخذ مدخلات من المستخدم مثلا أسمه و تقوم بمعالجة تلك المدخلات ثم تخرج رقم تسلسلي Serial Number اذا أدخلناها على البرنامج المراد كسره, سيقبلها البرنامج. مثال بسيط على ذلك البرامج التجارية المدفوعة, اذا قمت في يوم ما بتحميل نسخة تجريبية من برنامج مدفوع سيطلب منك البرنامج بعد فتحه اسمك و رقم تسلسلي  Serial Number  ليتم تفعيل البرنامج, و طبعا لن تحصل على رقم تسلسلي الا بعد دفع ثمن البرنامج و شرائه من الشركة المبرمجة له, مهمتك أن تقوم باستخدام الهندسة العكسية على البرنامج و فهم خوارزمية Algorithm التأكد من صحة الرقم التسلسلي, كيف يعرف البرنامج اذا كان هذا الرقم التسلسلي صحيح أم مزيف؟ كيف يقوم بمعالجته؟ تلك الاسئلة هى التي نبحث لها عن حلول من خلال الهندسة العكسية. فاذا تمكنا من فهم تلك الخوارزمية و تمكنا من كتابة برنامج يقوم بنفس المعالجات و المعادلات التي يقوم بها البرنامج المراد كسره, نستطيع عمل برنامج Keygen اذا ادخلنا له اسم يستطيع توليد رقم تسلسلي صحيح لهذا الاسم, اذا ادخلنا تلك البيانات على البرنامج المراد كسره قبلهم البرنامج بشكل طبيعي.

برامج الـ Patch: تلك البرامج كسابقتها نقوم نحن بكتابتها, وكما يشير اسمها فهي تقوم بعمل ترقيع Patch على برنامج ما. هل تتذكرون مقال برنامج Winrar نحن لم نتطرق لفهم أي من خوارزميات البرنامج لنستطيع كسر حمايته, فقط قمنا بتغيير تعليمة من تعليمات البرنامج و كان ذلك كفيلا بكسر الحماية التي أردنا كسرها. من خلال معرفة عنوان تلك التعليمة و معرفة عنوان تحميل الملف التنفيذي في الذاكرة (من خلال معرفتنا بالبنية الداخلية للبرامج التنفيذية PE file format يمكننا ايجاد عنوان تحميل البرنامج في الذاكرة و يسمى هذا العنوان Executable Base Address) نستطيع كتابة برنامج يقوم بحساب العنوان الخاص بالتعليمة المراد تغييرها بدقة و يقوم بتغييرها, بهذا الشكل استطيع اعطاء هذا البرنامج الذي كتبته Patch الى أي شخص يملك برنامج Winrar و كل ما سيقوم به هو فتح البرنامج ليقوم بترقيع برنامج Winrar تلقائيا و بذلك يقوم بالغاء النافذة المزعجة التي تظهر في البداية.

Crack: على عكس سابقيه فالكراك لا يكتب و لا يبرمج, ولكن نستطيع القول أن الكراك هو ملف معدل جاهز. في مقال Winrar بعد قيامنا بالتعديل على البرنامج و ترقيعه, نستطيع أخذ الملف التنفيذي الجديد لبرنامج Winrar الذي عدلنا عليه و نعطيه لأي شخص يملك نفس النسخة من برنامج Winrar على نفس نظام التشغيل الخاص بنا, بذلك نكون قد أعطيناه Crack لبرنامج Winrar أي نسخة معدلة مسبقا للبرنامج. لاحظ أننا نقوم بأعطاء الشخص نسخة من الملف التنفيذي فقط و ليس البرنامج كله, فهذا هو الملف الذي عدلنا عليه, في بعض الحمايات الأخرى نقوم بالتعديل على الملف التنفيذي و ملف DLL Module فبالتالي الـ Crack في تلك الحالة سيكون هو الملف التنفيذي و ملف الـ DLL المعدلان. لا حظ أيضا أنه يجب على الشخص الذي يتسلم الـ Crack حذف النسخة القديمة من الملف التنفيذي و وضع النسخة المعدلة Crack في نفس مسار البرنامج.

 

في أغلب المسابقات و برامج الـ Crackme التي بأذن الله سنقوم بتحليلها, سيكون المطلوب واحد أو كلا الأمرين التاليين:

– كتابة برنامج Keygen.

– كتابة برنامج Patch لازالة شاشة مزعجة تظهر في البرنامج أو حذف موسيقى تعمل مع تنفيذ البرنامج.

 

بفضل الله تعالى تعلمنا في هذا المقال مصطلحات مهمة في الهندسة العكسية, في المقالين القادمين بأذن الله سنبدأ أول تجربة لنا بكتابة برامج Keygen و Patches لبرامج Crackme.

 

 

المراجع:

FLARE Challenge.

Crackmes Website.