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

لماذا الدالة malloc?؟

مغلق
بدأه n3rd في 3 يناير 2007 · 8 رد · 4,039 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

أما بعد:

للأسف وضعت أكثر من مووضوع أتمنى فيه الإجابة عن الدالة malloc ولكن لاأحد أجابني إجابة شافية :(

الدالة malloc أراها تستخدم بكثرة في مجال ثغرات البرامج وخاصة Buffer overflow _____ لماذا؟ :huh:

مالذي يميز الدالة malloc عن باقي الدوال لكي أرها أكثر من مرة في الـExploits?

وتوجد ثغرات إكتشفها أخي Qnix وأستخدم الدوال malloc فيها. << لكن لماذا؟ :wacko:

أتمنى إني أعرف فايدتها في في ثغرات البرامج ,.,.,(Buffer overflow) -_-

وجزاكم الله ألف خير ,,,

أخوكم خالد النويصر من الدمام

#3

هذه الدالة أخى تستخدم عند عدم تحديد حجم المتغير أو حتى حجم المصفوفة وتترك لتحدد عند التشغيل حتى لا تحدث الثغرة buffer overflow

والله أعلم

سلام

befor any great jop there is a bad jop had done

#4

ممكن أجد شرح لها عندكم << أشرحوها لي ... وسامحوني << عاوز مثال عليه %$#

أخوكم خالد النويصر من الدمام $#@

وياليت في الشرح تعطوني مثال تخيلي << يعني كأني طفل :)

وشكرا أوي على اللي عاوز يساعدني

#5

malloc تستخدم في لغة السي لحجز مساحة من الذاكرة في الـ heap, طبعا يجب ان تحدد كمية المساحة اللتي تحتاجها, و يمكن القول (حسب ما اظن) ان علمها مشابه لعمل new في السي بلص بلص.

اما لماذا تستخدم في الـ exploits فلا ادري, و لكن اذا كنت تعمل في السي (و ليس سي بلص بلص) فـ malloc هي الطريقة الوحيدة لحجز مساحة في الـ heap لان لغة السي لا تحتوي على امر new.

#6

أهلا أخ حسن كيف حالك؟ << تذكرني ولا؟ :D

شرفت الموضوع والله ! وأتمنى لك التوفيق دائما << تذكر لما كنت أطشفك أول هههه << يمزح معك

طيب ركز معي أخ حسن

أنا أبرمج في C وحاب أستفيد من الدالة malloc في كتابة exploit وإذا تريد أن ترى بعض الأمثلة :

انظر هنا:

http://www.milw0rm.com/exploits/1029

تم إستخدام الدالة malloc في اسفل الإكسبلويت

وهنا:

http://www.milw0rm.com/exploits/824

تم إستخدام الدالة malloc في اسفل الإكسبلويت

أتمنى إنك تقولي ,,, فيماذا أستفاد أخوي Qnix من الدالة malloc

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

أخوك خالد النويصر من الدمام

buffer = malloc(600);

ptr = buffer;
addr_ptr = (long *) ptr;
for(i=0; i < 600; i+=4)
{ *(addr_ptr++) = ret; }

for(i=0; i < 200; i++)
{ buffer = '\x90'; }

ptr = buffer + 200;
for(i=0; i < strlen(shellcode); i++)
{ *(ptr++) = shellcode; }

buffer[600-1] = 0;

execl("./epsxe", "epsxe", "-nogui", buffer, 0);

free(buffer);

لاحظوا معي أول وآخر السطر وأعتقد إنه مثل ماقال الأخ حسن malloc تعتبر مثل new في الـc++ و free تعتبر مثل delerte << أعتقد إنه كلامي صح؟ B)

ولكن في ماذا إستفاد منها الأخ Qnix ؟ :huh:

وماهي المعاملات اللي أمررها لها؟ <_<

ومشكور :rolleyes:

#7

malloc و أخواتها مثل calloc و realloc و free هي الطريقة الوحيدة (على الأقل الأشهر) لحجز مساحة من الذاكرة في Runtime ففي حالة الexploit ففي أغلب الوقت أن تريد احجز مساحة 100 byte مثلاً و لهذا تستخدم malloc لحجز ال 100 بايت ثم تستخدم المساحة المحجوزة في تخزين كود الexploit داخله

و هي تستخدم في كل الأوقات و ليس في ال exploits فقط , و ستجدها في أي كود C فلم يكن يوجد هناك حل اخر

أما في ال ++C فهناك new

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#8

السلام عليكم ورحمة الله وبركاته

بالنسبة لإستخدام ال malloc فأنا قلت هى مساحة فى الذاكرة توضع أحتياطيا والمبرمج يضع قيمة هذه المساحة وتأخذ من ال heap واللى هى ذاكرة للمبرمج لنداءات الدوال وأستدعاءتها وكذلك فى هذه الحالة وهى بتستخدم لعدم حدوث ثغرة

Buffer overflow

وبصراحة فى ال exploits أنا موافق رأى أخى ال bashmohandes فهى لضمانه أن المؤشر سيتسع لضم اال exploit وهى بتستخدم أيضا دائما للحماية من الخطأ والثغرة السابق ذكرها أعلى

والله أعلم

سلام

تم تعديل هذه المشاركة بواسطة say say not know في 4 يناير 2007 في 15:10

befor any great jop there is a bad jop had done

#9

طيب ممتاز إنتم قلتم عشان تحجز مساحة في exploit? << هل قصدكم مساحة ال(قاربج داتا+النوب+الشل كود+عنوان العودة)

طيب خلاص أنا راح أفتح موضوع للمناقشة وأريد أن أرى إبداعاتكم فيه << ألبقاء للأقوى لوووووول :D

أخوكم خالد من الدمام

هذا الموضوع مغلق.

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