سیستم عامللینوکسویندوز

همه چیز درباره Fork Bomb

آشنایی کامل با Fork Bomb

Fork Bomb زمانی رخ می دهد که یک process بیش از حد مجاز و معقول شروع به تولید child process کند. شاید سوال بپرسید که child process یعنی چه؟ منظور از child process پردازشی است که توسط یک پردازش دیگر که پردازش والد نام دارد ساخته شود. در Fork Bomb هر process باز شده چند process دیگر را باز می کند و به همین ترتیب این عمل باعث اشغال منابع سیستم و در نهایت باعث کرش کردن سیستم شما می شود. (مثل دنباله فیبوناچی و زاد و ولد خرگوش ها)

فورک بمب را میتوان هم برای لینوکس و هم برای ویندوز پیاده سازی کرد. پس از اجرای این بمب، سیستم شروع به کند شدن می‌کند و پس از مدت زمانی سیستم کاملا کرش می کند. اینکه این مدت زمان چقدر است بستگی به سخت‌افزار شما دارد. البته بعد از ریستارت کردن همه چیز به روال سابق برگشته و سیستم بدون مشکل کار می کند و هیچ جای نگرانی وجود ندارد. (برای تست کردن فورک بمب میتوانید از ماشین های مجازی استفاده کنید تا مجبور به ریستارت سیستم نباشید)

Fork Bomb در لینوکس

برای اجرای فورک بمب در لینوکس کافی است تا از کد زیر در ترمینال استفاده کنید:

:(){ :|:& };:

حال اجازه دهید تا نشان دهیم این خط یعنی چه:

  • :()  یک تابع تعریف می کند.
  •  :|:  باعث میشود تا تابع به صورت بازگشتی فراخوانی شود.
  •  &  باعث میشود تا این عملیات در بک گراند قضیه اجرا شود.
  •   ;  سیمیکالن نشانگر انتهای دستور است.
  •   :  باعث میشود تا مجدد تابع اجرا شود.

Fork Bomb در ویندوز

برای اجرای فورک بمب در ویندوز کافی است تکه کد زیر را در یک فایل با فرمت bat ذخیره کرده و اجرا کنید:

%۰|%۰

fork bomb process - همه چیز درباره Fork Bomb

بیشتر بخوانید:

یوسف وفایی

فارغ التحصیل کارشناسی IT، علاقه مند به برنامه نویسی و علم امنیت، عاشق یادگیری حرفه های جدید، کنجکاو برای همه چیز، همچنین همیشه تلاش میکنم تا به هدفم برسم...

‫2 دیدگاه ها

    1. در برنامه‌نویسی، تابع fork() برای ایجاد یک فرآیند جدید از فرآیند فعلی استفاده می‌شود. وقتی تابع fork() فراخوانی می‌شود، یک نسخه تطابقی از فرآیند فعلی ساخته می‌شود. هر دو فرآیند، فرآیند فرزند و فرآیند والد، از همان نقطه از کد پیشرفت خود را ادامه می‌دهند.

      Activation record (همچنین به عنوان stack frame نیز شناخته می‌شود) یک ساختار داده در حافظه است که اطلاعات مربوط به یک تماس تابع (تابع فعلی) را شامل می‌شود. این اطلاعات شامل مقادیر متغیرهای محلی، آدرس بازگشت، پارامترها و غیره است. هر تابع فراخوانی شده یک activation record جدید در بالای پشته (stack) ایجاد می‌کند و وقتی تابع به پایان می‌رسد، activation record آن حذف می‌شود.

      بنابراین، هر زمان که تابع fork() فراخوانی می‌شود و یک فرآیند جدید ایجاد می‌شود، activation record تابع در فرآیند فرزند نیز تکثیر می‌شود. بدین ترتیب، فرآیند فرزند با داشتن یک نسخه از activation record تابع، می‌تواند از نقطه‌ای که تابع fork() فراخوانی شده است، ادامه دهد و اجرای کد را از همان نقطه شروع کند.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


دکمه بازگشت به بالا