تبیان، دستیار زندگی
ویروسهای مقیم در حافظه همان طور كه از اسم آنها بر می آید با قرار گرفتن در حافظه سیستم شروع به تكثیر و آلوده سازی می كنند. به این ویروسها ویروسهای با عملكرد غیر مستقیم نیز می گویند . چرا كه مستقیما دنبال فایلی برای آلوده ساز...
بازدید :
زمان تقریبی مطالعه :

آشنایی با عملكرد ویروسهای مقیم در حافظه

ویروسهای مقیم در حافظه همان طور كه از اسم آنها بر می آید با قرار گرفتن در حافظه سیستم شروع به تكثیر و آلوده سازی می كنند. به این ویروسها ویروسهای با عملكرد غیر مستقیم نیز می گویند .

چرا كه مستقیما دنبال فایلی برای آلوده سازی نمی گردند بلكه پس از مقیم شدن در حافظه فایلهایی را كه متعاقبا در دسترس قرار گیرند آلوده می كنند همچنین بعضی از ویروسهای مقیم در حافظه با عنوان آلوده كننده های سریع نیز شناخته می شوند كه علت این مطلب در همین مقاله ذكر خواهد شد.

مقایسه عملكرد ویروسهای مقیم و غیر مقیم :

ویروسهای مقیم در حافظه در مقایسه با ویروسهای غیر مقیم دارای سرعت تكثیر بیشتری هستند ولی در مدت زمانی طولانی ممكن است تعداد كمتری از فایلها را آلوده كنند. به این ترتیب كه ویروسهای غیر مقیم تنها در صورتی كه اجرا شوند شروع به آلوده سازی سیستم می كنند و تا وقتی كه فایل آلوده به این گونه ویروسها اجرا نشود شروع به تكثیر نمی كنند ، بنا براین دارای سرعت تكثیر پایینی هستند . اما از آنجا كه بعد از اجرا شدن بر اساس جستجوی فایل عمل آلوده سازی را انجام می دهند در مدت زمان طولانی ممكن است كل فایلهای كامپیوتر را آلوده كنند.

در عوض ویروسهای مقیم در حافظه پس از مقیم شدن به محض اینكه فایلی در دسترس قرار گیرد آن را آلوده می كنند ، بنا بر این دارای سرعت تكثیر بالایی هستند اما از آنجا كه تنها بعضی از فایلهای اجرایی آن هم بیشتر به هنگام اجرا شدن در دسترس ویروس قرار می گیرند ، لذا از این نظر در طولانی مدت ممكن است تعداد كمتری فایل را آلوده كنند.

مزایای ویروسهای مقیم در حافظه بر ویروسهای غیر مقیم :

ویروسهای مقیم در حافظه چون عملیات جستجوی فایل ندارند و به محض اجرا در حافظه مقیم می شوند معمولا احتمال اینكه به واسطه اجرا توسط كاربر كشف شوند بسیار كم است . در مورد ویروسهای غیر مقیم به علت عملیات جستجو كه انجام می گیرد گاه فایل اصلی با كمی تاخیر اجرا می شود یا در مورد بعضی از آنها به خاطر اینكه سطح وسیعی از دیسك س خت را جستجو و آلوده می كنند ، كاربر متوجه كار كردن بی دلیل دیسك سخت می شود در حالی كه از قبل این گونه نبوده است و همین مطلب احتمال كشف ویروس توسط را زیاد می كند . اما در مورد ویروسهای مقیم در حافظه چون عملیات جستجو وجود ندارد این احتمال بسیار كمتر است .

همچنین بعضی از ویروسهای مقیم در حافظه هنگامی كه خودشان در حافظه مقیم باشند با در اختیار گرفتن توابع  خاصی از وقفه های DOS مقادیر اولیه اندازه تاریخ و زمان فایل های آلوده به همان ویروس را نشان می دهند و به این ترتیب نمی گذارند كه كاربر به واسطه تغییر اندازه فایل یا احتمالا تغییر تاریخ و زمان فایل متوجه آلوده بودن آن شود لذا باز هم احتمال كشف شدن ویروس توسط كاربر كاهش می یابد.

نكته :

بعضی از ویروسهای مقیم در حافظه قبل از اینكه در حافظه قرار بگیرند مانند ویروسهای فایلی با عملكرد مستقیم به جستجوی فایل می پردازد و تعدادی از فایلها (معمولا فایلهای سیستمی) را آلوده می كنند و سپس در حافظه مقیم می شوند.

ساختار كلی ویروسهای مقیم در حافظه :

ویروسهای مقیم در حافظه دارای دو بخش هستند یك بخش غیر مقیم كه قبل از اینكه ویروس در حافظه مقیم شود اجرا می شود و بخش دیگر پس از مقیم شدن ویروس در حافظه. بخش اول هنگامی اجرا می شود كه فایلی آلوده به ویروس توسط كاربر اجرا شود و وظیفه تخصیص حافظه و قرار دادن ویروس در حافظه و انتقال بردار وقفه    مورد نظر را به ویروس بر عهده دارد . اما بخش دوم زمانی اجرا می شود كه برنامه ای با فراخوانی وقفه ای كه در اختیار ویروس است بخواهد كار خاصی را انجام دهد . در این حالت ویروس كه سر راه دسترسی به وقفه مزبور نشسته است فعال می شود و عملیات تكثیر تخریب یا مخفی كاری (برای جلوگیری از كشف ویروس توسط كاربر) را انجام می دهد . در اینجا به توضیح مراحل بخش اول ( غیر مقیم ) می پردازیم :

1- تست مقیم بودن ویروس در حافظه:

در این قسمت ویروس معمولا با استفاده از یكی از توابع استفاده نشده از وقفه ای كه توسط ویروس در اختیار گرفته شده است و فرستادن پارامترهای خاص و فراخوانی وقفه مزبور مقیم بودن خود را در حافظه چك می كند . در صورتی كه ویروس در حافظه مقیم نباشد پارامترهای برگشتی از طرف سیستم عامل خواهد بود و چون ویروس این پارامتر ها را انتظار ندارد متوجه می شود كه در حال حاضر ویروس در حافظه مقیم نیست اما در صورتی كه خود ویروس از قبل در حافظه مقیم شده باشد به واسطه ارسال پارامترهایی خاص به برنامه فراخوان ویروس متوجه می شود كه از قبل در حافظه مقیم شده است لذا بدون اینكه مجددا در حافظه مقیم شود كنترل را به برنامه اصلی می دهد تا اجرا شود.

2- تخصیص حافظه :

ویروسها به دو روش كلی در حافظه مقیم می شوند :

1 – با استفاده از وقفه 27h یا تابع 31h از وقفه 21h

2 – با استفاده از دستكاری زنجیره MCB(Memory Control Black) در حافظه .

در روش اول پس از اینكه قسمت غیر مقیم اجرا شد ویروس با استفاده از فراخوانی وقفه 27h و یا تابع 31h از وقفه 21h اجرای خود را خاتمه می دهد و به صورت مقیم در حافظه قرار می گیرد ویروسهایی كه از این روش استفاده می كنند بخش تخصیص حافظه را خودشان انجام نمی دهند و این بخش را سیستم عامل با توجه به پارامترهای ورودی انجام می دهد . پس بخش تخصیص حافظه فقط مربوط به ویروسهایی است كه از روش دوم برای مقیم شدن استفاده می كنند.

در روش دوم ویروسها ابتدا یك قسمت خالی از حافظه را برای اینكه كدشان را در آن قرار دهند پیدا می كنند (پیدا كردن فضای خالی در حافظه نیز دارای روشهای متنوعی است) سپس به صورت دستی در ابتدای بلاك تخصیص یافته DTA را تشكیل می دهند و بعد با دستكاری زنجیره MCB خود را در وسط یا انتهای این زنجیره  قرار می دهند این عملیات باعث می شود كه این قسمت از حافظه به ویروس اختصاص داده شده و توسط برنامه های دیگر اشغال نشود.

3- كپی ویروس در حافظه :

این بخش مخصوص آن دسته از ویروس های مقیم در حافظه است كه از روش دستكاری زنجیره MCB برای تخصیص حافظه استفاده می كنند . در این قسمت ویروس از ابتدا تا انتهای خود را در بلاك اختصاص داده شده در حافظه كپی می كند.

4- تغییر بردار وقفه مورد نظر و اشاره آن به ویروس :

در این قسمت ویروس با دستكاری آدرس وقفه مورد نظر در جدول بردار وقفه ها كه از آدرس 0000:0000 شروع می شود آخرین مرحله مقیم شدن را انجام می دهد . معمولا ویروسها وقفه های 21h و 9h , 13h را در اختیار می گیرند . ویروسها با در اختیار گرفتن وقفه 21h برای عملیات تكثیر و مخفی كاری وقفه 9h برای عملیات تخریبی دیسك ها یا جلوگیری از دسترسی كاربر به اطلاعات دیسك ها استفاده می كنند در این بخش ویروس آدرس وقفه های مورد نظر خود را از جدول بردار وقفه ها برداشته و درون قسمتی از ویروس كپی شده در حافظه ذخیره می كند و به جای آن آدرس بخش مقیم خود را قرار می دهد در نتیجه هر بار كه برنامه ای این وقفه ها را فراخوانی كند ابتدا بخش مقیم ویروس اجرا شده و پس ار آن وقفه اصلی (كه آدرس آن درون بخش مقیم ویروس توسط بخش غیر مقیم ذخیره شده است)اجرا می شود.

5- خاتمه اجرای بخش غیر مقیم ویروس و اجرای برنامه اصلی فایل آلوده :

در این مر حله دیگر ویروس در حافظه مقیم شده است لذا ویروس كنترل را به برنامه اصلی می دهد تا برنامه اصلی اجرا شود و كاربر متوجه اجرای ویروس نشود.

برگرفته از سایت   irsecure