السلام عليكم ورحمة الله وبركاته
كما تعودنا منكم ماتقصرون ماشاء الله تبارك الله ...
والله العظيم الواحد يقرأ عن المؤشرات في النت ولكن الدروس اللي على النت تختصر الموضوع في بعض الأحيان
المهم قريت إحدى البرامج مفتوحة المصدر ووجدت بعض علامات اللإستفهام: <_<
س:
unsigned long sp(void) // This is just a little function
{ __asm__("movl %esp, %eax");} // used to return the stack pointerواحد يتكلم عنها رجاءا :wacko: << أنا عارف إنه بالإسمبلي وعارف إنه يستخدم لإعادة المؤشر بتاع المكدس ولكن ممكن شرح عن الطريقة اللي يعملها
أو مكيانيكيتها :blink:
س:
ret = esp - offset; // We want to overwrite the ret address
اعتقد إن عرف اللي فوق وشرحها لي قادر على هذه بإذن الله. -_-
س:
ptr = buffer;
addr_ptr = (long *) ptr;
for(i=0; i < 600; i+=4)
{ *(addr_ptr++) = ret; }ماني فاهم ولا شي وممكن واحد يتكلم عن النجمة * اللي إستخداماتها كثيرة ....... مرة ضرب ومرة قيمة ومرة مادري ايش. ! :huh:
س:
execl("./vuln", "vuln", buffer, 0);ممكن تقولون لي ماهي الوسائط للداله هذه. :)
ملاحظة :
الأكواد على الـLiNuX .
أتمنى الإجابة عن هذه الأسئلة واعذروني ولكن الواحد وش يسوي إذا كان يعشق البرمجة :lol: .
ومشكور مقدما.
أخوكم خالد النويصر من الدمام.