ألسلام عليكم
كيف حااااالكم؟
مالفريق بين Heap و Stack و Buffer ?
سلاموووز :lol:
ألسلام عليكم
كيف حااااالكم؟
مالفريق بين Heap و Stack و Buffer ?
سلاموووز :lol:
اقتباسألسلام عليكم
وعليكم السلام
اقتباسكيف حااااالكم؟
بخير جعلك بخير :rolleyes:
اقتباسمالفريق بين Heap و Stack و Buffer ?
ال BufferOverflow او ال BufferOverRun هو خطء برمجي بعد استغلاله يمكن
تغيير مسار البرنامج الى مسار اّخر في الميموري .....
ال HeapOverflow الله يسلمك هو Buffer Overflow يحدث في قسم ال HDA -> Heap Data Area
وعشان كذا يسمونه Heap Overflow الميموري في قسم ال Heap يتم تخصيصها ديناميكيا عن
طريق البرنامج وهو في حاله ال Run-Time يعني وهو شغال .. :)
وطريقه استغلال هذه الثغره هي انه المهاجم ( Attacker ) يخرب بعض المعلومات الموجوده في
ال Heap وعن طريق هاذا التخريب يقوم بالكتابه على التركيب الذاتي لهاذه المساحه مثل
ال LLP وتعنى Linked List Pointers ... ادري كلامي مو واضح ويمكن ماتفهم منه الا
القليل .. اذا كنت حاب تعرف اكثر ابحث عنه في Google او اي محرك بحث جيد
ال StackOverflow هو حدوث طفح Overflow في ""متغير"" قريب من البفر مما يغير
في صفات البرنامج وهاذي الصفات الي راح تستغل ^_^ ... او عن طريق الكتابه على عنوان
الرجوع في الفريم الخاص بلستاك Stack Frame... ولما الفنكشن هاذي تسوي return
راح يقفز للعنوان الجديد الي انتا كتبته ^.^ ومثل ماتعرف هاذا العنوان راح يوديك قدام لل
Opcode او راح يرجعك ورى لل Opcode ... لازم تبحث اكثر عن هاذه الشغلات
في Google عشان تعرف شو السالفه بلضبط ... لانها شغله وفيها حركات كثيره
ومعلومات كثيره لازم تعرفها :rolleyes:
اقتباسسلاموووز
ياخوي الغالي ... قبل لاتكتب موضوع ارجوك ان تبحث قليييييلا ... وبعدها اسال عن شئ انت مو فاهمه لانه
الناس الي هنا مو فاضيييه عشان ترد على اسأله اجوبتها سهله وموجوده وراح تجدها لو بحث قلييييلا ..
فقط قليييلا .... المهم ابغاك قبل لاتكتب اي موضوع ثاني انك تبحث شوي واذا في شئ مو فاهمه اسال عنه
وبعدها راح تحصل من يجاوبك بوسعت صدر وطولت بال ...
سلام ( ولاتنسى تبحث عن الموضوع عشان تعرف عنه اكثر ... لانه اغلب الكلام الي قلته ماراح يودي ولا يجيب )
-_-
تم تعديل هذه المشاركة بواسطة Qnix في 8 مارس 2007 في 13:04
انا بكرر سال بطريقه تانيه معلش
يعني ايه heab , ويعني ايه stack ويعني ايه buffer عمليا وفزيائيا واستخدمها
ده الي انا عاوزه واعتقدج الي الشخص ده كان عايزه
مش شرح لي ال overflow errors
بدل ماتسأل روح دور شوي ... واذا حصلت نقطه مو فاهمها اسال عنها ... مو تجي
وتبي تعرف كل شئ من الصفر بدون ما تسأل عن اي شئ ... روح ابحث وتعال
اوكي:
كل اللذي ذكرته هو مصطلحات تستخدم في التعامل مع الذاكرة في نطاق البرمجة:
Stack
الستاك هو مكان من الذاكرة يقوم الكومبيوتر (البرنامج) بتخزين عناوين نقاط الرجوع وعناوين البراميتر لدوال.
وهو يتعامل بطريقة الاول يدخل هو الاول يخرج FIFO ،
عندما تستدعي دالة ما ماذا يحدث؟ calling Subroutine or function
يقوم البرنامج بتخزين عنوان رجوع على الستاك ثم يقوم بالقفز الى عنوان الدالة، اي ان PC او program counter يتغير الى عنوان الدالة
ثم عند الانتهاء من الدالة عن طريق امر Ret يقوم باسترجاع عنوان الرجوع اللذي خزن في الستاك فيقوم بقراءته ثم يضعة في PC لرجوع الى نقط (بعد) استدعا الدالة .
اذا الداله تاخذ باراميتر فرضا فان الباراميتر سوف تدفع (push ) او تخزن في الستاك ايضا، اولا يقوم البرنامج بدفع (تخزين) عنوان الرجوع ثم يقوم ايضا بدفع عنوان البراميتر على الستاك، ثم يقز الى عنوان الدالة، عند الوصول الى الدالة يقوم بجلب او قراءه الباراميتر من الستاك،وهذا يعتمد هل الباراميتر (byVal or byRef ) ، ملاحظه الستاك يحتوي على مؤشر اسم SP stack Pointer وهو يؤشر اى مكان الذاكر لعناوين.
كذالك الستاك يستعمل بحفظ السجلات عندما نحفظها عن طريق Push &Pop
push AX push BX بعض الاوامر التى تتعامل مع المسجلات pop BX pop AX
تلاحظ ان حفظنا المسجلات على الستاك عن طريق push ثم جلبناهم عن طريق pop
كذالك يجب ان تعرف ان الحفظ في هذه الحال يتم بمحتوى المسجل(قيمة او عنوان لا تفريق بينهم) على الستاك وهذا مهم ان تعرفه في البرمجة.
buffer
وهو مصطلح لحجز ذاكر ما لاستخدام من قبل المبرمج او البرنامج.
Heap وهو ايضا مصطلح يستخدم غالبا في حجز ذاكر من الذاكره الرئيسية لتعامل معها. وتمتاز الهيب انها تستعمل FILO اي ان اللي يدخل اول يخرج بالاخير.عندما تقرى اي قيمة من الهيب فانها تاخذ اخر يقيم ادخلت.
وشكرااا
تم تعديل هذه المشاركة بواسطة pc.2058 في 18 مارس 2007 في 20:05
هذا الموضوع مغلق.