در این مقاله سعی کردم به معرفی ابزار کاربردی برای برنامه نویسان 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