القسم 2 الهندسة العكسية دلفي
في الوقت الحالي، لا توفر Borland أي منتجات لتفكيك الملفات القابلة للتنفيذ (.exe) أو "ملفات دلفي المترجمة" (.dcu) إلى كود البرنامج الأولي (.pas).
وحدة دلفي المترجمة: DCU ( وحدة دلفي المترجمة: DCU )
عندما يتم تجميع مشروع دلفي أو تشغيله، يتم إنشاء ملف وحدة الترجمة (.dcu). بشكل افتراضي، يتم تخزين النسخة المجمعة من كل وحدة في ملف ثنائي منفصل. اسم الملف هو نفس ملف الوحدة، وامتداده هو .DCU. على سبيل المثال: يحتوي الملف Unit1.dcu على التعليمات البرمجية والبيانات المعلنة في الملف Unit1.pas.
هذا يعني أنه إذا كان لديك بعض الموارد، مثل مكون مترجم، فكل ما عليك فعله هو فك ترجمته والحصول على الكود المصدري. خطأ، تنسيق ملف DCU غير موثق (تنسيق المالك) ويمكن أن يتغير من إصدار إلى آخر.
بعد المترجم: الهندسة العكسية دلفي
إذا كنت تحاول فك ترجمة ملف دلفي القابل للتنفيذ، فهناك بعض الأشياء التي يجب أن تعرفها:
عادةً ما يتم تخزين ملفات برنامج دلفي المصدر في نوعين من الملفات: ملفات كود ASCII (.pas، .dPR) وملفات الموارد (.res، .rc، .dfm، .dcr). تحتوي ملفات Dfm على تفاصيل (خصائص) للكائنات الموجودة في النموذج. عند إنشاء ملف قابل للتنفيذ، تقوم دلفي بنسخ المعلومات الموجودة في ملف .dfm إلى ملف التعليمات البرمجية .exe المكتمل. يصف ملف النموذج كل مكون في النموذج، بما في ذلك كافة قيم الخصائص الثابتة. عندما نقوم بتغيير موضع نموذج، أو عنوان زر، أو تعيين إجراء حدث لمكون، فإن دلفي تسجل هذه التغييرات في ملف DFM (وليس رمز إجراء الحدث - فهو مخزن في ملف pas/dcu) . من أجل الحصول على "dfm" من الملف القابل للتنفيذ، نحتاج إلى فهم نوع الموارد المخزنة في الملف القابل للتنفيذ Win32.
جميع البرامج التي تم تجميعها بواسطة دلفي تحتوي على الأجزاء التالية: CODE، DATA، BSS، .idata، tls، .rdata، .rsrc. من منظور إلغاء الترجمة، الأجزاء الأكثر أهمية هي: CODE، .rsrc. في المقالة "إضافة وظيفة إلى برنامج دلفي" ("إضافة وظيفة إلى برنامج دلفي") (إضافة المترجم: واحدة تلو الأخرى)، تمت مناقشة بعض الأشياء المثيرة للاهتمام حول تنسيق دلفي القابل للتنفيذ ومعلومات الفئة وموارد سوق دبي المالي: كيفية تعيين الأحداث إلى معالجات الأحداث الأخرى المحددة بنفس النموذج كيفية إضافة معالج الأحداث الخاص بك لإضافة رمز إلى الملف القابل للتنفيذ لتغيير عنوان الزر.
من بين الأنواع المختلفة للموارد المخزنة في ملف .exe، تحتوي RT_RCDATA أو الموارد المحددة بواسطة التطبيق (البيانات الأولية) على المعلومات الموجودة في ملف DFM قبل التحويل البرمجي. من أجل تحديد بيانات DFM من ملف .exe، يمكننا استدعاء وظيفة EnumResourceNames API... لمزيد من المعلومات حول تحديد بيانات DFM من ملف .exe، يرجى الرجوع إلى: "ترميز مستكشف Delphi DFM" ("كتابة ملف كاشف دلفي DFM"). (أضاف المترجم: ترجمت واحدة تلو الأخرى)