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


أهلاً ومرحباً بكم في منتدى الحزن إن شاء الله تكونوا كلكم بخير .
 
الرئيسيةالبوابةأحدث الصورالتسجيلدخول

 

 علوم: الهندسة العكسية و قرصنة البرامجيات

اذهب الى الأسفل 
2 مشترك
كاتب الموضوعرسالة
amine karate
Supervision
Supervision
amine karate


ذكر
عدد الرسائل : 79
العمر : 33
العمل/الترفيه : الرسم
تاريخ التسجيل : 19/03/2008

علوم: الهندسة العكسية و قرصنة البرامجيات Empty
مُساهمةموضوع: علوم: الهندسة العكسية و قرصنة البرامجيات   علوم: الهندسة العكسية و قرصنة البرامجيات I_icon_minitimeالأربعاء يوليو 02, 2008 12:55 pm


علوم: الهندسة العكسية و قرصنة البرامجيات


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


فما هي الهندسة العكسية ؟ عندما يقوم أي شخص بتصميم أي جهاز او منتوج فيجب ان يضع في البداية الخرائط والتصاميم لكي يتمكن من اكمال المنتوج بشكل ناجح وفعال , اما في الهندسة العكسية فتحصل العملية بالعكس حيث يتم استخلاص الخرائط و البيانات وغيرها من المعلومات المهمة من المنتوج النهائي.
و لتوضيح الهندسة العكسية في البرامجيات يجب توضيح ان البرامج تكتب بلغات مختلفة مثل c++ او visual basic وغيرها من اللغات التي تدعى بلغات عالية المستوى و بطبيعة الحال فإن هذة اللغات لا يمكن ان يفهمها المعالج كونه يفهم لغة الماكنة فقط الممثلة ب(0) و (1) فقط فإن هذه اللغات تترجم الى لغة الماكنة لكي يتمكن المعالج من فهم الأوامر.
فمن هنا نجد ان احد تطبيقات الهندسة العكسية هو عرض البرنامج بلغة الماكنة و اجراء التعديلات علية عن طريق برامج خاصة تدعى ( المحررات) مثل برنامج
( Hview) وغيره من برامج المحررات.
و لما كانت لغة الماكنة مكونة من الأصفار والواحدات فقط فمن الطبيعي يكون من الصعب جدا" اذا لم يكن مستحيل فهم البرنامج من قبل المبرمج او الشخص الذي يريد قرصنة البرنامج فنلاحظ استخدام قراصنة البرامجيات برامج خاصة تدعى (المنقحات) مثل برنامج (olly) تقوم هذة البرامج بعرض البرنامج المراد اجراء الهندسة العكسية عليه بواسطة لغة ( الأسيمبلي ) او لغة التجميع و هي لغة تمتاز بكونها اكثر سهولة من لغة الماكنة و لكنها اصعب بكثير من لغات البرمجة الأخرى , و ما يميز هذة اللغة أن كل تعليمة من لغة الأسيمبلي تقابلها تعليمة من لغة الماكنة عكس باقي لغات البرمجة التي قد تكون تعليمة واحدة يقابلها ما لايحصى من التعليمات بلغة الماكنة، هذه الميزة جعلت من السهل على المبرمجين
( و القراصنة ) اجراء تغيير بالبرنامج على مستوى تعليمة واحدة واكثر حسب الرغبة.
ان لغة الأسيمبلي تمتاز بصعوبتها و هي عبارة عن لغة مطولة جدا" حيث ان عملية كتابة برنامج بلغة الأسيمبلي هي شبيهة بحفر بئر بأبرة الخياطة ولكنها تكون مفيدة في الحالات التي تتطلب السرعة العالية في التنفيذ مثل المفاعلات النووية. و كلما ازدادت معرفتك بلغة الأسيمبلي كلما ازدادت خبرتك كقرصان ناجح.
قرصنة الكومبيوتر: يمكن تصنيف قرصنة الكومبيوتر بعدة انواع من التصانيف , ولكني هنا سوف اصنفها الى قسمين:
1. قرصنة البرامجيات : حيث ان جميع البرامج التي تصمم في الوقت الحاضر تكون مزودة برقم تسلسلي خاص به لايمكن تنفيذ البرنامج الا اذا ادخل الرقم الصحيح وذلك منعا" للمتاجرة بالبرنامج بعيدا" عن سيطرة الشركة المصممة للبرنامج فتكون هذه وسيلة لحماية البرنامج ( وتوجد غيرها من الوسائل) فتكون عملية القرصنة هي بازالة هذه الحماية.
2. اختراق اجهزة الكومبيوتر : وذلك عن طريق الانترنت من خلال برامج خاصة مثل sub7 وغيرها من البرامج حيث قد يستخدم القرصان البريد الألكتروني لارسال الباتش الخاص للبرنامج الى الكومبيوتر الضحية ومن خلاله يستطيع التجسس على هذا الكومبيوتر و التحكم والعبث به.
يمكن الاستعانة ببرامج المنقحات لكسر حماية البرامج و لتوضيح آلية كسر حماية البرامج يمثل المخطط التالي تلك ألآلية.
نلاحظ من المخطط انه بعد ادخال الرقم المتسلسل تتم عملية مقارنة له فاذا حقق شرط البرنامج ينتقل التنفيذ الى التنفيذ الصحيح و عكس ذلك ينتقل التنفيذ الى التنفيذ الخاطىء ويتم ابلاغك بعدم قبول الرقم المتسلسل.
ففي مثل هذه الحالة ماذا يفعل القرصان؟؟
اقترب قليلا" .. ماذا لو قمت بعمل خدعة للبرنامج بجعل الانتقال الى التنفيذ الصحيح بكلتا الحالتين كما موضح في الشكل:
ففي هذه الحالة عند ادخال أي رقم متسلسل سوف يؤدي التنفيذ الى التنفيذ الصحيح سواء كان الرقم المتسلسل صحيحا ام خطأ.
حيث تتم هذه العملية عن طريق فتح البرنامج الذي يراد كسر حمايته عن طريق احد برامج المنقحات مثل ( olly ) و (wadasam) حيث يعرض البرنامج بلغة الأسيمبلي و يبحث عن اداة الشرط التي تفصل بين التنفيذ الصحيح والتنفيذ الخاطئ , و يمكن الاستدلال عن هذه الأداة عن طريق البحث عن رسالة الخطأ بطرق خاصة التي تخبرك بخطأ الرقم التسلسلي ومن ثم اجراء تعديل على الأداة الشرطية بحيث تجعل البرنامج يقبل بأي رقم متسلسل.
مما سبق يتوجب على القرصان ان تكون لديه خبرة جيدة في دوال القفز والمقارنة بلغة الأسمبلي و تتبع البرنامج المعروض بواسطة برامج المنقحات ,فمثلا" الأداة CMP تقوم بعمل مقارنة بين قيمتين
( المصدر والوجهة) هذه التعليمة مهمة جدا طالما يكون القراصنة مهتمين بهاSmile. توضع ضمن الرماز لتقوم بمقارنة, على سبيل المثال لتقارن السيريال الصحيح مع الذي ندخله نحن, او لتتفقد ان كان البرنامج مسجلا او لا الخ.
غالبا ما يتبع هذه التعليمة تعليمة قفز من نوع ما (شرطية/غير شرطية(. وتكون صيغة الايعاز:
Cmp x,y حيث ان x وy ثوابت او مسجلات.
ومن ادوات القفز jmp وهي عبارة عن اداة قفز غير شرطية وتكون صيغته jmp address حيث ان address هو العنوان الذي سوف ينتقل اليه تنفيذ البرنامج مجرد وصول التنفيذ الى اداة القفز غير الشرطية بدون شرط.
واما ادوات القفز الشرطية فهي عديدة و تعتمد على flag registers أو سجل العلم وهو القيمة التي تخزن في مسجلات معينة نتيجة عملية حسابية او منطقية او عملية مقارنة , ومن مسجلات الأعلام المهمة.
( sign flagو Zero flag Sign flag )
يستخدم للكشف عن ناتج العملية من حيث كون الناتج اكبر او اصغر من صفر, فاذا كان ناتج العملية سالبا يكون العلم = 1 واذا كان الناتج موجبا يكون العلم = صفر . اما zero flag فهو يستخدم للكشف عن كون الناتج يساوي صفرا" ام لا , فاذا كان الناتج = صفر تكون قيمة العلم = 1 و عكس ذلك يكون العلم = صفر.
من الأدوات الشرطية المهمة في عملية كسر الحماية (je,jne,jz,jnz) حيث يكون عمل كلا" من (je ,jz) متشابهة حيث يتم الانتقال في حالة كون zero flag =1 وتكون (jne ,jnz) متشابهه في العمل حيث يتم الأنتقال في حالة كون zero flag=0 وعكس ذلك ينتقل البرنامج الى الخطوة التي تليها .
ان الكلام عن لغة الأسيمبلي طويل جدا" و لايمكن ان يفصل بسطور و سنبين في مقالات قادمة ان شاء الله شرح موجز لغة الأسيمبلي و سنركز على ما يهمنا في هذه اللغة من حيث الاستفادة منها في كسر حماية البرمجيات.
الرجوع الى أعلى الصفحة اذهب الى الأسفل
Admin
Admin
Admin
Admin


ذكر
عدد الرسائل : 125
العمر : 34
العمل/الترفيه : أُحبُ شمسي
تاريخ التسجيل : 02/03/2008

علوم: الهندسة العكسية و قرصنة البرامجيات Empty
مُساهمةموضوع: رد: علوم: الهندسة العكسية و قرصنة البرامجيات   علوم: الهندسة العكسية و قرصنة البرامجيات I_icon_minitimeالخميس سبتمبر 04, 2008 11:50 am

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

دمت بسلام ... سلام
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://el7zn.4umer.com
 
علوم: الهندسة العكسية و قرصنة البرامجيات
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

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