egyptian
زيزوومى فعال
غير متصل
من فضلك قم بتحديث الصفحة لمشاهدة المحتوى المخفي


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

تعريف الهندسة العكسية
تسمي بال (Reverse Engineering) ...وهي آلية برمجية تعني بتحليل آلية عمل برنامج ما ومعرفة سلوكه وطريقته في العمل والبيئة التي يعمل بها..والهندسة العكسية فرع من فروع البرمجة المتقدمة.
كما أنها تعرف ب ...
هي عملية إكتشاف مبدأ عمل أداة أو جهاز أو برنامج بصيغة تكنولوجية محضة وذلك من خلال تحليل النظام المثبت على تلك الآلة بهدف معرفة كيفية وطريقة عمله ، وغالبا ما يتم أخد ذلك البرنامج أو الجهاز وتحليله بغية تحويله لبرنامج جديد حيث يقوم بنفس المهام الموكلة إليه دون نسخ الأصل

مثال بسيط
انت شخص تعمل مبرمجا مستقلا, في يوم ما استخدمت برنامجا لضغط الملفات و اكتشفت ان الملفات الخارجة تضغط بشكل مثالي, حيث ان مساحة الملف تتقلص بشكل كبير, فاعجبتك الفكرة و قررت ان تبرمج برنامجا يتعامل مع هذا النوع من الملفات المضغوطة. الان ستتوجه مباشرة الي موقع برنامج الضغط لتبحث فيه عن أي وثيقة تسرد تفاصيل و البنية الداخلية للبيانات بداخل الملف المضغوط و اي معلومات تقنية عنه, ففوجئت ان المبرمج لم يقم بوضع أي توثيق علني لبنية الملف المضغوط. حينها ستدرك انه من الستحيل ان تجد بنية الملف المضغوط, هل ستستسلم و تقول ما باليد حيلة فصاحب البرنامج نفسه لم يفصح لي عن السر؟ الكثير يمكن ان يفعل ذلك, لكن اذا كنت شخصا فضوليا, و عندك مهارات الهندسة العكسية, فستذهب فورا و تبدأ بفتح البرنامج و تراقب آلية عمله, و تبدأ بدراسته دراسة ممعنة و دقيقة, حتى تصل للكود الخاص بكتابة الملف المضغوط, و تبدأ بفهم لوغارتمية البنية الداخلية للبيانات بداخل الملف المضغوط .
اذا صاحبنا هنا استعمل الهندسة العكسية ليفهم آلية عمل برنامج ما (او جزء منه), وبدأ بدراسته حتى وصل لنقطة مكنته من كتابة برنامج يحوي هذه الخاصية .
كما تمكننا الهندسة العكسية من التعديل -اذا اردنا- على برنامج ما, والممتع هنا ان التعديل يكون بأي شكل من الاشكال, اما حذف خاصية مزعجة لا نريد استخدامها او رؤيتها في البرنامج, او تعديل خاصية موجودة (مثل تغير لون جزء من البرنامج, تغير كلمة او جملة في البرنامج, الخ…), و ايضا اضافة خاصية كنا نتمنى وجودها في البرنامج.
أذا اعطتنا الهندسة العكسية قدرة التعديل على البرنامج, بمعني اخر اصبحنا مبرمجين, مثلنا مثل صاحب البرنامج بالضبط.
والهندسة العكسية مستخدمة فعليا في غالب جوانب البرمجة, فالمعربين (اللذين يعربون البرامج الاجنبية) يستخدمون الهندسة العكسية في تغيير قيم الجمل و العبارات و الكلمات من لغة البرنامج الاصلية الي العربية, معدلين بذلك على البرنامج نفسه. كما يستخدمها المخترقون في فهم آلية عمل برنامج ما ليجدوا ثغرة أمنية فيه تمكنهم من تخطي نوع معين من الحمايات الرقمية او خرق خاصية (مثل خاصية ادفع ثم استخدم البرنامج) المنتشرة في كثير من الالعاب و البرامج.

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

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

طيب ما مصلحات الهندسة العكسية والمصطللحات المستخدمة بها أخي أسامة ؟
أقول لحضرتك ...
Compiler : مترجم
Assembler : مجمع
Documentation : وثيقة
Reverse Engineering : هندسة عكسية
Processor : معالج
Controller : متحكم
Integrated Circuit: دائرة متكاملة
WinAsm _ Masm32 _ PE _ PEedit .....وغيرها الكثييييير

طيب بعد ما عرفتنا أخي أسامة فكرة عن الهندسة العكسية .. كيف نستخدمها ؟ وماذا نحتاج لإستخدامها ؟؟
أقول لحضرتك ...
الموضوع يعتمد بدرجة كبيرة على هدفك النهائي.
ان كنا نتحدث على المستوى البرمجي, فنحتاج ان نكون على دراية كبيرة بلغة المجمع, هذا لانك لن ترى البرنامج المراد فهم خصائصه على صورته الاصلية التى برمج بها اي بلغة عالية المستوى (الا بعض البرامج التي يمكن ان نعيد تجميع لغة المجمع من الملف التنفيذي الخاص بها, و نرجعها لكود عالي المستوى مثل الجافا او السي شارب, ولكن في معظم الحالات للأسف هذا غير ممكن ), فلهذا نقوم بمعظم التغييرات و الدراسات على الملف التنفيذي للبرنامج نفسه, فنقوم بدراسة و قراءة كود المجمع الذي بداخله, و نبدأ بتحليله حتى نصل الي هدفنا, سواء تعديل او فهم خصيصة ما.
للأسف, الدراية بلغة المجمع وحدها لن تكفي, فجزء كبير من كود المجمع في اي برنامج يكون خاص بنظام التشغيل و المترجم الذي قام صاحب البرنامج بترجمة البرنامج عليه. فهنا نحتاج لفهم على الاقل بعض المفاهيم و الاساسيات في علم المترجمات و علم نظم التشغيل, و كلما كان العلم موجه لنظام تشغيل بعينه, كان افضل, لان نظام التشغيل ويندوز يختلف عن نظام التشغيل لينكس, وهما بدورهما يختلفان على غيرهما في كثير من الامور التقنية, فلابد من فهم الفروقات او على الاقل التركيز على احداهما, حسب نظام تشغيل البرنامج المراد دراسته و فهمه.
طبعا هناك برامج نستخدمها يمكن ان تسهل علينا بعض من تلك العمليات, لكن و على غير العادة, لن نجد برنامج ابدا تدخله الملف التنفيذي و يخرجلك تقرير يشرح آلية عمله, بل انت الذي ستقوم بالتحليل و القراءة و الدراسة لتتمكن من فهم البرنامج المراد دراسته, و هنا تكمن متعة هذا العلم.
وهنا نذكر أنه
أشهر برامج الهندسة العكسية هو برنامج OLLYDBG

طيب السؤال المهم أخي أسامة... هل الهندسة العكسية أمر قانوني أم لا ؟
مممممم
حقيقة, لا أحد يستطيع الجزم بأنه أمر قانوني أو لا, لأن هذا يعتمد على ماذا ستفعل بعد أن تقوم بفهم البرنامج أو التمكن من كسر حمايته. فبعض الناس يمكن أن تستخدم تلك المعلومات في صناعة برنامج آخر يملك نفس المواصفات و المميزات, و غيرهم سيقوم بأخذ الجزء الذي كان مهتم بفهمه ليقوم بتحسينه و وضع النسخة المحسنة في برنامجه, و البعض الاخر يمكن ان يستفيد بتلك المعلومات لاكتشاف ثغرة امنية تمكنه من اختراق مستخدمي البرنامج بدون ابلاغ الشركة المبرمجة للبرنامج. الامثلة كثيرة و النوايا غير معلومة, فلهذا الموضوع يحوي الكثير من الجدال, و لكن اختصارا كل شئ يتوقف على استخدامك للمعلومات التي قمت بمعرفتها بعد كسرك لحماية البرنامج و دراسته.
واحدة من أشهر القضايا في الهندسة العكسية, بين شركتي سيجا اليابانية المشهورة بصناعة أجهزة الالعاب و ألعاب الفيديو, و شركة أكولاد الأمريكية المبرمجة للألعاب. في عام 1990 قامت شركة سيجا بصناعة جهاز ألعاب الفيديو الحديث حينئذ (جينسيس) و لم تفصح عن أي وثيقة تقنية عن معالج هذا الجهاز حتى لا يمكن لأي شركة أخرى برمجة ألعاب للجهاز الا هي. فقامت شركة أكولاد بعمل هندسة عكسية على معالج الجهاز الحديث جينسيس و قامت بفهم بل و طباعة اول وثيقة تقنية تتحدث عن آلية البرمجة على هذا المعالج, و بدأت بصناعة و بيع ألعاب خاصة بها تعمل على جهاز جينسيس, ولكن سرعان ما أكتشفت سيجا ذلك و قامت برفع قضية دولية على شركة أكولاد, بسبب نشرها وثيقة تفصح فيها عن اسرار و تفاصيل تقنية من شأنها أن تتسبب في خسائر كبيرة للشركة, فأنتهت القضية لصالح شركة أكولاد الامريكية بحجة أن أكولاد لم تهتك أي قانون دولي, بل قامت ببرمجة ربحية للمعالج جينسيس و انتهى الأمر على ذلك.

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

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



التعديل الأخير بواسطة المشرف: