السلام عليكم
عندي بعض التساؤلات وهي حول موضوع قدمه الاخ
jass
حول البرمجة المتقدمة للملفات التنفدية
وقد دكر في جزئية هدا اقتباسها
اقتباسالخطوة الأولى تحديد عناون الكود التنفيذي في الذاكرة؟هذة الخطوة مهمة ,,كيف سنعرف مكان وعنوان تنفيذ برنامجنا بداخل أي عملية
لكي نبدأ بتكوين بيئة للملف التنفيذي , الحل بسيط عن طريق قانون أبسط
قانون تعليمة JMP و CALL
أنا متأكد أن أغلبكم تتبع وراقب طريقة عمل فايروس أو shellcode
وقد تستغرب من أن هذا الشل كود يبدأ بعشرات JMP و Call دون أي تنفيذ ودون سبب واضح؟!
وللمعلومة : فايروس ساسر يبدأ ب 20 تعليمة jmp .. تقريباً
هذة الطريقة لتحديد عناوين الكود بداخل أي عملية .... كيف ؟
أولاً : تعليمة JMP و Call لهما نفس العمل وقد لايكون هنالك إختلاف , إلى في العمل الإضافي للمعالج
عندما ينفذ المعالج تعليمة jmp فإنة ينقل التنفيذ فقط , ولكن عندما ينفذ تعليمة call
فإن المعالج ينقل التنفيذ + يقوم بتخزين عنوان الرجوع للتعليمة التالية , وهنا وجد الحل
الآن نريد تحديد أي عنوان بالبايت داخل برنامجنا , نبدأ بتعليمة jmp وننقل التنفيذ
إلى العنوان الذي نريد معرفته , بعد ذلك ننفذ تعليمة call , مباشرة يقوم المعالج بشكل
تلقائي بدفع عنوان العودة إلى المكدس بواسطة الأمر push
نحن نقوم بكل بساطة بسحب عنوان العودة بتعليمة pop إلى أي مسجل وبهذا نكون قد حددنا موقعنا
--- وهذا هو الشكل النهائي للقانون ----
0012FE1C: JMP SHORT 0012FE1F 0012FE1E: NOP 0012FE1F: CALL 0012FE62 xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxx 0012FE62: POP EDI
فسؤال هو كتالي
مادا يقصد بالعنوان المراد البحث عنه هل هو هنوان بداية برنامجنا
point entry
ام هو عنوان بداية مقطع الكود في برنامجنا الاصلي
يعني لم افهم المراد بالعنوان هدا
ثانيا
دكر انك هنالك قانون واستعمل قيم هل ثابتة ام هو مثال فقط
فارجو من الاخوة الافادة بشرح لهده الجزئية وشكرا