الهندسة العكسية
نشرت: 2022-03-10تم التحديث الأخير في 21 مارس 2022
سأتحدث عن ماهية الهندسة العكسية ولماذا هي مهمة. يعتقد العديد من الأشخاص الذين ليسوا مطورين أنهم يعرفون معنى الهندسة العكسية لأنهم رأوها في الأفلام ، لكن هذا مفهوم خاطئ. الهندسة العكسية لها معاني كثيرة للعديد من الأشخاص المختلفين ، وما سأخبركم به سيكون مختلفًا تمامًا عن تعريف شخص آخر.
بالنسبة لبرنامج White Label ، تأخذ الهندسة العكسية برنامجًا بشكل أساسي وتكتشف كيف يعمل وما يمكن أن يفعله. لكي نكون أكثر دقة ، على الرغم من ذلك ، فإن الهندسة العكسية تأخذ برنامجًا موجودًا وتتعلم أعماله الداخلية بحيث يمكنك تعديل البرنامج للقيام بأشياء أخرى غير ما قصده المؤلف. يمكنك معرفة المزيد حول ما تعنيه العلامة البيضاء عند تصفح موقعنا!
في تطوير البرمجيات ، نقول أنك تقوم بهندسة عكسية لشيء ما عندما تفككه وتكتشف كيف يعمل. تعد الهندسة العكسية مفيدة لتعلم كيفية استخدام البرنامج وكيفية عمله. يمكن استخدامه أيضًا في العديد من الأشياء المختلفة مثل التسويق الرقمي والدفاع عن شركتك والقرصنة والعديد من الأشياء الأخرى.
الهندسة العكسية في التسويق
إذا كنت تنوي إنشاء حملة تسويقية جديدة ، فيمكنك إجراء هندسة عكسية للبرنامج لمعرفة ما يفعله أو كيف ينبغي أن يؤدي. ثم يمكنك تعديل الكود لتكييفه مع احتياجاتك. يمكنك أن تفعل الشيء نفسه مع الإعلانات أو أنواع التسويق الأخرى. من الممكن أيضًا العثور على معلومات حول المنافسين ومواصفات المنتج وأدائه وأشياء أخرى كثيرة.
عندما تريد إنشاء شيء ما ، عليك أولاً أن تبدأ بتصميم. يمكنك استخدام الأدوات لمساعدتك في عمل التصميم ، ولكن يجب عليك أيضًا اختباره مع العناصر الخاصة بك لأنه من المهم معرفة ما إذا كانت الأشياء ستتفاعل بشكل مناسب. في بعض الأحيان ، تحتاج إلى العبث بالبرامج ومعرفة كيفية عملها من خلال إنشاء مخرجات خاطئة. يمكنك حتى قيادة السيارة بصورة لسيارة حقيقية ، خاصة إذا كنت تريد أن ترى كيف تتصرف. نحن نسمي هذا القيادة الافتراضية أو الافتراضية.
ما هي الهندسة العكسية؟
إنها عملية تحليل برنامج كمبيوتر لتحديد هيكله الداخلي ، ورمز المصدر ، والخوارزميات ، وتدفق البيانات. الغرض من الهندسة العكسية هو فهم كيفية عمل برنامج الكمبيوتر وما هو داخل البرنامج. عندما تقرأ هذه المعلومات ، يمكن تسميتها تحليل الأعطال أو التفكيك أو الهندسة العكسية أو تصحيح الأخطاء. أحب "تصحيح الأخطاء" لأنه يبدو أشبه بنشاط يقوم به مبرمج عندما لا يكون كذلك. في الوقت الحاضر ، لا يدرك معظم المبرمجين أنهم مهندسون عكسيون.
الهندسة العكسية هي عملية أخذ جزء من البرنامج ، أو برنامج (أو جهاز تكسير) ، لتنفيذ إجراء لم يقصده المطور أبدًا لاستخدامه من أجله (ولكن يحدث أحيانًا). في هذا السيناريو ، وجد المخترق عيبًا في التعليمات البرمجية في أحد البرامج واكتشف كيفية استخدامه للحصول على التأثير المطلوب. على سبيل المثال ، يمتلك المتسللون ألعابًا مصممة بشكل عكسي ويعرفون كيفية عملها أو نوع المعلومات التي يمكنهم تعلمها.
لماذا هو مهم؟
تم تصميم كل برنامج في السوق تقريبًا بشكل عكسي. هناك عدد قليل من البرامج التي لم يتم عكسها. حتى تطبيقات Microsoft خضعت لهندسة عكسية. حتى الشركات بأكملها لا تفعل شيئًا سوى هندسة البرمجيات العكسية مقابل المال.
أصبحت الهندسة العكسية ذات أهمية متزايدة منذ أن أصدرت حكومة الولايات المتحدة قوانين لحماية البرامج أو إدارة الحقوق الرقمية (DRM). لن يكون هناك برنامج مزود بنظام إدارة الحقوق الرقمية إذا لم يتم إجراء هندسة عكسية له ، ولن تتم حماية البرامج ذات الهندسة العكسية بواسطة إدارة الحقوق الرقمية. هناك المزيد من الأسباب التي تجعل الهندسة العكسية مهمة ، ولكن هذا موضوع لكتاب كامل (أو سلسلة من الكتب).
لقد غيرت الهندسة العكسية العالم. لقد غيرت تماما الطريقة التي يعيش بها الناس. هناك الكثير من المزايا:
- يمكنك جعل البرنامج يفعل ما تريده أن يفعله.
- يمكنك معرفة كيفية إزالة الأشياء من برنامج ليس من المفترض أن يكون موجودًا هناك.
- يصبح من الأسهل تقسيم شيء ما إلى مكوناته وتحليله بشكل أكبر.
ما هي فوائد الهندسة العكسية؟
يمكنك رؤية ما يفعله والتعرف على آلياته الداخلية من خلال عكس البرنامج. يمكنك إجراء تغييرات على البرنامج دون التأثير على البرامج الأخرى أو نظام التشغيل. هذه ميزة مهمة لأن معظم البرامج يجب أن تكون متوافقة مع المكتبات وأنظمة التشغيل التي يوفرها ناشروها. لا يؤدي إجراء تغييرات على أحد البرامج إلى إلحاق ضرر جسيم بالنظام فحسب ، بل يؤدي أيضًا إلى تلف المستخدمين الآخرين. تمنحك الهندسة العكسية الوصول إلى جميع الآليات والمكتبات الداخلية والمعلومات حول كيفية عملها. يمكنك إنشاء برامج يمكنها استخدام المكتبات وأنظمة التشغيل دون دفع ثمنها.
ما هي عملية الهندسة العكسية؟
هذا سؤال معقد لأن الإجابة تعتمد على برنامج الهندسة العكسية الخاص بك. أفضل إجابة يمكنني تقديمها لك هي: "هذا يعتمد ...". تحتوي البرامج الحديثة على كود مضاد للتصحيح ، وهندسة عكسية ، ومضاد للكتابة. وهذا يعني أن الهندسة العكسية تنطوي على استخدام مكثف للتعتيم ، مما يضيع الوقت ويمكن أن يؤدي في بعض الأحيان إلى تعطل البرنامج.
التعتيم هو أسلوب هندسي مضاد للعكس يجعل من الصعب إجراء هندسة عكسية للبرنامج. عادةً ما يتم نقل الإجراءات الفرعية والوظائف والأجزاء الأخرى من البرنامج إلى أماكن مختلفة في الذاكرة ، ويتم تغيير هياكل البيانات بأرقام سحرية. في بعض الأحيان يتم تشفير الشفرة أو مسحها ضوئيًا بحثًا عن كلمات معينة قد تعطي معلومات عن هيكلها. هذا لا يكفي دائمًا لهزيمة المهندسين العكسيين ، لذلك في بعض الأحيان ، يتعطل البرنامج عند محاولة تفكيكه بأدوات محددة. في العديد من البلدان ، يعد هذا غير قانوني حتى إذا كنت تمتلك نسخة من البرنامج ولم تقم بتعديله بأي شكل من الأشكال.
كيفية عكس برامج / برامج الهندسة؟
إذا لم تكن معتادًا على عكس البرامج الهندسية ، فمن الحكمة أن تبدأ ببرامج يمكن الوصول إليها أولاً. سيكون من الأفضل إذا حاولت تعلم أدوات خاصة بالهندسة العكسية قبل أن تقفز إلى النهاية العميقة للمسبح. IDA Pro هو أداة جيدة للمبتدئين. (IDA تعني تحليل كشف التسلل). إنه مجاني ، ويمكن الوصول إليه بسهولة ، ويمكنه عكس أي برنامج تقريبًا طالما أنه 32 بت. تعمل IDA Pro من خلال تحليل التعليمات البرمجية المجمعة أو المفككة ثم تعرضها بطريقة تسهل عليك قراءتها وفهمها وحتى تحريرها. تعد IDA Pro أداة جيدة للمهندس العكسي ، ولكنها غير مناسبة لجميع المواقف.
أداة أخرى هي GDB وهي أداة تصحيح الأخطاء ، مثل Visual Studio. ومع ذلك ، سيقوم GDB بتصحيح التعليمات البرمجية أثناء التنفيذ تمامًا مثل Visual Studio. الفرق هو أنه يمكنك إجراء تغييرات على الكود أثناء التنفيذ ثم التسبب في تعطل البرنامج. سيسمح لك ذلك برؤية الخطأ في المنطق (بافتراض أن آلية مكافحة التصحيح / مكافحة الهندسة العكسية لا تخفيه). بعد ذلك ، يمكنك إصلاح الخطأ أو متابعة التنفيذ حتى يتسبب جزء آخر من البرنامج في حدوث مشكلة.
ما هي مخاطر الهندسة العكسية؟
من غير القانوني في معظم البلدان عكس هندسة البرمجيات. ومع ذلك ، فإنه ليس غير قانوني في بعض المواقف في الولايات المتحدة الأمريكية طالما أنك تمتلك نسخة من البرنامج ويمكنك إثبات أنه تم الحصول عليها بشكل قانوني (باستخدام الرقم التسلسلي أو مفتاح القرص المضغوط). هناك أيضًا استثناءات لآليات مكافحة النسخ والقرصنة ، والتي تسمح فقط للأغراض التعليمية. لعكس هندسة البرنامج ، يجب أن يكون لديك معلومات كافية للقيام بذلك. هذا يعني عادة فهم الكود المصدري للبرنامج الذي تقوم بهندسة عكسية. ليس الأمر سهلاً دائمًا ، حتى إذا كان بإمكانك قراءة الكود المصدري ، خاصة إذا تم استخدام آلية مكافحة تصحيح الأخطاء / مكافحة الهندسة العكسية.
آمل أن تكون لديك فكرة أفضل عن معنى الهندسة العكسية وكيفية تطبيقها على حالات مختلفة من الأشياء. آمل أيضًا أن تصبح أكثر دراية في هذا المجال وتساعد عملك وعملائك على النمو باستخدام أدوات المعرفة الخاصة بهم بطريقة أكثر حداثة.