مقدمة
يهدف هذا المنشور إلى دراسة بعض التقنيات الهندسية العكسية. يتم تقديم جميع المواد لأغراض إعلامية فقط وليس الغرض منها استخدامها في أي مكسب شخصي.
موضوع البحث
على سبيل المثال ، سوف ندرس رمز التوثيق Atomineer Pro (المشار إليه فيما بعد بـ APD). هذا هو مكون إضافي لبرنامج Visual Studio مصمم لتوليد التعليقات تلقائيًا في أكواد المصدر. أولاً ، قم بتثبيت هذا البرنامج المساعد وتحقق من تشغيله. يحتوي الإصدار المجاني على فترة تجريبية وعدد من قيود الاستخدام خلال هذا الوقت. لذلك عند إضافة تعليقات إلى ملف ، يتم إصدار رسالة للمستخدم تفيد بأنه خلال اليوم يمكن معالجة 10 ملفات فقط
عند محاولة معالجة المشروع بالكامل ، تعرض الأداة المساعدة مربع حوار تحذيرًا بأن هذا الأمر غير متوفر.
لنبدأ
أولاً ، ابحث في دليل الملحق المثبت وابحث عن مكتبة حيوية واحدة فقط. نحن في حاجة إليها. أول شيء سنفعله هو تحميله على برنامج إلغاء ترجمته dotPeek من JetBrains.
كما ترون في لقطة الشاشة ، فقد مرت المكتبة بمرور الفوضى ، وتمت إعادة تسمية المتغيرات والأساليب ولديها أسماء من النموذج أ ، ب ، ج ، د ... هذا ما نحتاج إليه. كنا نبحث عن ذلك تماما. دعونا نرى ما يمكن القيام به.
الجزء 1
أول ما يتبادر إلى الذهن هو العثور على السطر ، ولكن نظرًا لأن وظيفة البحث ليست في dotPeek ، دعنا نذهب بطريقة مختلفة. نقوم
بفك ترميز المكتبة باستخدام
ildasm.exe القياسي من Microsoft SDKs. سوف تتلقى الإخراج ملف نصي واحد فقط. في ذلك ، وابحث عن نص الرسالة "
وضع المحاكمة. يرجى ملاحظة أن لديك ... "
وجدت طريقة
.method الأسرة هيجبيسيج ثابت بولي ه () cil تمكنت
التي تنتمي إلى فئة CmdDocThisScope. عاد الآن إلى dotPeek.
إذن ما لدينا. لقد وجدنا طريقة تعرض رسالة تجريبية لـ APD وتقوم ، حسب الحالة ، بإرجاع صواب أو خطأ. نجد جميع الأماكن التي تسمى هذه الطريقة
تم العثور على نقطتي اتصال فقط وهذه هي الطرق CmdDocThisFile :: c و CmdDocThisScope :: c.
من خلال اسم الفئات ورمز المنشئ ، من الواضح أن الفئات مسؤولة عن عناصر القائمة ، وتشير واقعية الأسلوب "c" إلى أن هذا هو معالج الأحداث لاختيار عنصر القائمة المقابل من قبل المستخدم (هذه المعلومات ستكون مفيدة لنا أكثر). من السهل تخمين أنه إذا عادت الطريقة إلى حقيقة ، فسيتم تنفيذ الأمر على الرغم من أنه سيُظهر مربع حوار مع تحذير.
في بداية طريقة CmdDocThisScope :: e ، يتم زيادة المتغير f. افتح نافذة "IL View" وابحث عن رمز الأمر:
ويكيبيديا لديها مقال
يصف هذه التعليمات .
بعد ذلك ، ابحث عن هذه الطريقة في ملف مكتبة APD. سنفعل ذلك باستخدام أداة المؤسسة الدولية للتنمية. في النافذة مع الوظائف ، سنجد طريقتنا ، وسنرى الرمز المألوف بالفعل.
بعد تحديد تعليمة ldsfld ، نجد تمثيلها الثنائي في نافذة Hex View
يؤكد وصف الفريق أننا وجدنا المكان الصحيح.
مزيد من التحليل للرمز لهذه الطريقة والخطوات اللاحقة تتجاوز نطاق هذه المقالة.
الجزء 2
الآن ، كباحثين متمرسين بالفعل ، نجد دعوة للحوار مع الرسالة "أمر
" Document all in Project "متاح فقط في النسخة الكاملة ... ". هذه الطريقة هي CmdDocThisProject :: c
فئة CmdDocThisProject هي المسؤولة عن الأمر "معالجة المشروع" ، والطريقة "c" افتراضية. ويحتوي على شيء واحد فقط - إنه دعوة للحوار مع رسالة. لا شروط ، لا الشيكات. يؤدي البحث في التعليمات البرمجية المصدر إلى استخدام طريقة CmdDocThisProject :: i ، التي تحتوي على ما نتوقعه في CmdDocThisProject :: c. الآن في المؤسسة الدولية للتنمية ، يمكننا بسهولة إيجاد الطرق اللازمة ويمكننا تعلم تعليمات CIL
استنتاج
يبقى أن نقول أن المقال ترك بقع بيضاء عمدا لدراستهم المستقلة.