Mohammad Mahdi Anbaraki
Mohammad Mahdi Anbaraki
خواندن ۱ دقیقه·۲ سال پیش

ابزاری کاربردی برای برنامه نویسان C


در این مقاله سعی کردم به معرفی ابزار کاربردی برای برنامه نویسان c/cpp و افرادی که vulnerability researcher هستن و یک نگاه کلی بر اینکه این ابزار چی هست و شیوه کار با اون چطوره رو بصورت جمع و جور توضیح بدم :)




یکی از مواردی که در c/cpp مهم هست بحث شناسایی باگ هایی که مربوط memory managementو... هست

که ابزار Valgrindاینکار رو برای ما انجام میده لازم به ذکره این ابزار بصورت dynamic analysis کار میکنه .
این memory profilerکارش شناسایی باگ هایی که مربوط به memory management ، threadingهست(داخل خود سایتش توضیحات بیشتری قرار داده)

حالا بریم یک نگاه بندازیم به این ابزار :)

این کد برنامه ما هست که فضایی از هیپ رو الوکیت کردیم زحمت فری کردنش رو نکشیدیم :)

#include <stdlib.h> int main(int argc, char** argv) { char* ptr = (char*)malloc(16 * sizeof(char)); return 0; }

برای کار با این ابزار ابتدا برنامه خودمون رو روی مود دیباگ کامپایل میکنیم
سوییچ مود دیباگ : -g

gcc -g myprogram.c -o myprogram

بعدش برنامه خودمون رو به Valgrind میدیم

Valgrind ./myprogram


که یکسری اطلاعات میده به ما

حالا اگه ما به Heap Summary نگاه کنید میگه چندبار allocکردین و چندبار freeکردین
اگه به قسمت Leak Summary توجه کنید اگر leakداشته باشید مثلا 16بایت در بخش
definitely lost نوشته میشه که این به معنای memory leak!
برای دیدن اطلاعات جزئی تر و فهمیدن اینکه کجا رخ داده

valgrind --leak-check=full ./myprogram





کانال تلگرامی من :

@cafe_security


cppبرنامه نویسیc
علاقه مند به دنیای آنالیز باینری و مهندسی معکوس
شاید از این پست‌ها خوشتان بیاید