الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال عن ماهية الدالتين Crc16 &crc32 وطريقة إستخدامهما

بدأه يوسف دايت في 17 يونيو 2008 · 31 رد · 4,640 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#26

اولا شكرا لك

صدقني دماغي مش قادر أستوعب الوضوع فاريت تخليك معايا شوية أنا عارف ان الفيجوال مش محبوب عندك وسؤالي مش محبوب في اكثر من مكان يعني لا جنة ولا نار بقي في الشارع

دلوقتي الملف AHMED.EXE

قبل التحزيم تقوم بعمل CHECKSUM له عن طريقة هو او عن طريق ملف خارجي

وبعد التسطيب يجب ان يكون ال CHECKSUM من داخل البرنامج مش معقول هنعوز برنامج يفحص برنامج صح

آلية التاكد من ال CHECKSUM للملف عند كل تشغيل كيف تتم هل من DLL خارجي اللي هو بالاساس عمل ال CHECKSUM الاولي للملف AHMED.EXE

وهل يتم تخزين قيمة ال CHECKSUM داخل الملف التنفيذي أم لا ؟؟

وشكرا جزيلا لك

#27

يبدو ان لديك إلتباس ...

عندي برنامج main يريد التأكد من أن الملف extern لم يتم التلاعب به , ماذا نفعل ؟؟

1- نقوم بحساب الـchecksum للملف extern عن طريق احد البرامج المختصة بذلك (checksum هي ناتج عمل خوارزمية معينة على الملف مثل crc32 او MD5 ) , فلنفترض ان الناتج طلع 123456 .

2- في برنامج الـmain نكتب دالة تقوم بحساب الـchecksum للملف extern ونتأكد بأن النتيجة ستساوي أيضا 123456 , هذا وإلا فإن الملف قد تم التلاعب به .

هل فهمت ما أقصده ؟؟

------------------------------------

بالنسبة للـDLL فأنا اقصد فقط ان تجعل دالة حساب الـchecksum موجوده فيه حيث انها ستكون مبرمجة بلغة السي او الاسمبلي مثلا ::: هذا اذا كنت لا تملك موديول او سورس لحساب الـchecksum بالـVB .

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#28

شكرا لك

وضحت الصورة

انا كنت معتقد إن البرنامج سوف يحسب ال CHECKSUM لملفة التنفذي من داخلة

وبعد التحزيم يقوم الملف كل مرة بحساب ال CHECKSUM لنفسه ومقارنتها مع القيمة الاصلية التي حصلنا عليها قبل التحزيم

وبما إن الموضوع يمكن من داخل البرنامج نفسة سواء كان بموديول او DLL او حتي دالة فليس هناك مشكلة اليس كذلك ؟

بس لسه حاجة صغيرة معلش هل ال CHECKSUM الاولي (القيمة الاولي للملف ) والتي سيتم مقارنتها مع القيمة الحالية في كل يعمل الملف هل تخزن القيمة الاولية في الملف نفسه أم لا ؟؟ هذا هو الجزء المعقرب لسه

وشكرا

#29
اقتباس
وبما إن الموضوع يمكن من داخل البرنامج نفسة سواء كان بموديول او DLL او حتي دالة فليس هناك مشكلة اليس كذلك ؟

نعم لا مشكلة طالما انك تحسب الـchecksum لملف خارجي .

اقتباس
بس لسه حاجة صغيرة معلش هل ال CHECKSUM الاولي (القيمة الاولي للملف ) والتي سيتم مقارنتها مع القيمة الحالية في كل يعمل الملف هل تخزن القيمة الاولية في الملف نفسه أم لا ؟؟

لن تخزنها بالملف , بل في كود التأكد من مطابقة الـchecksums الاثنين , مثل :

'calculate the file checksum first ...
If checksum <> 123456 Then
	End
End If

تم تعديل هذه المشاركة بواسطة GamingMasteR في 28 يونيو 2008 في 06:55

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#30

جزاك الله كل خير اخي الكريم

آسف الآن فقط قرات ردك الاخير علي السؤال

اتمني لك كل توفيق

ودائما تساعد كل من يحتاج المساعدة مشكور جدا والشكر موصول للاخ محمد سيد الذي أوصلني الي هنا

شكرا لكم سوف اجرب وابلغكم بالنتيجة بإذن الله

#31

وحتى وان قام البرنامج بحساب الـ CRC لنفسه فما المانع؟

في الفيجوال سيكون الموضوع صعباً نوعاً ما لان ما تكتبه ضمن المحرر لا يتم تجميعه بنفس الصورة والترتيب ضمن الملف التنفيذي بالتالي موضوع حصر الجزء الذي يتم حساب الـ CRC له ممكن لكن صعب خصوصاً لغير المتمرس في التعامل مع مثل هذه الحالات.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#32

المشكلة انه لا يريد عمل الـchecksum على جزء فذلك ممكن من نفس البرنامج لكن يريد عمله على الملف كاملاً ...

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…