سؤال

هل هناك طريقة لإجبار نفس الكود على إنتاج نفس الثنائي في Visual C ++؟ قم بإيقاف تشغيل الطابع الزمني في PE أو إجبار الطابع الزمني في PE ليكون قيمة ثابتة ، وبعبارة أخرى؟

هل كانت مفيدة؟

المحلول 2

أفترض أنه يمكنك كتابة الأداة المساعدة لفتح PE ، وتعيين الفحص إلى 0 ، وضبط الطابع الزمني على ما تريد ، وإعادة حساب CRC ، ثم اكتبه مرة أخرى. سيكون من الرائع لو كانت هناك طريقة رسمية لضمان استنساخ ثنائي مثالي.

للمزيد من المعلومات:http://msdn.microsoft.com/en-us/magazine/cc301805.aspx

نصائح أخرى

إنه ليس فقط الطابع الزمني - هناك GUID مضمن يستخدم لمطابقة PDB - مثل جون روبنز يشرح.

حتى بعد ذلك ، لا توجد وسيلة لإجبار المترجم على توليد نتائج متسقة ، مثل جيم غريزر يشرح -

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

وبالتالي ، فإن الوظيفة وترتيب القسم هي ليس مضمونة أن يتم طلبها باستمرار في PE الناتجة. مثال على الرابط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top