<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های مهدی سلامی</title><link>https://virgool.ir/feed/@m_50942595</link><description></description><language>fa</language><pubDate>2026-11-12 06:14:19</pubDate><image><url>https://virgool.ir/images/default-avatar.jpg</url><title>مهدی سلامی</title><link>https://virgool.ir/@m_50942595</link></image><item><title>معماری پردازنده های RISC  و CISC</title><link>https://virgool.ir/@m_50942595/معماری-پردازنده-های-risc-و-cisc-jigwzri3svax</link><description>پروژه درس ریزپردازندهنام دانشجو مهدی سلامیمعماری پردازنده های RISC  و CISCمقدمه:تعریف پردازنده:واحد پردازش مرکزی (پردازنده) یاCPU که مخفف عبارت Central Processor Unit می‌باشد مانند مغز و بخش اصلی کامپیوتر است که مسئول پردازش تمامی دستورالعمل‌‌ها و مدیریت کلیه مراحل پردازش داده‌ها است.عملکرد پردازنده شامل سه مرحله است:(Fetch)واکشی یا همان دریافت داده‌ها و دستورالعمل اولین مرحله از مراحل عملکرد پردازنده است. در این مرحله سی پی یو دستورالعمل‌هایی که توسط کاربر به کامپیوتر داده می‌شود در قالب صفر و یک از RAM دریافت می‌کند که این دستورالعمل‌ها یک بخش کوچک از عملیاتی است که قرار است بر روی داده‌ها انجام شود؛ بنابراین سی پی یو برای انجام کامل عملیات باید بداند دستورالعمل بعدی کاربر چیست. آدرس دستور فعلی داده‌شده به سیستم توسط شمارنده سیستم یا(Program Counter) که به‌اصطلاح به آن PC می‌گویند نگهداری می‌شود سپس PC به همراه دستورالعمل‌ها در واحد ثبت دستور  (Instruction Register)  که اصطلاحاً به آن IR می‌گویند درج می‌شوند و در آخر مقدار PC یک واحد افزایش می‌یابد تا به نشانی دستورالعمل بعدی ارجاع داده شود. در فرآیند واکشی با توجه به محتوای PC محل قرار گرفتن دستور بر روی حافظه مشخص می‌شود و درصورتی‌که یک دستور به‌صورت جهش (Jump) اجرا شود شمارنده برنامه به آدرس دستوری که جهش به آن نقطه انجام‌شده است تغییر پیدا می‌کند. رمزگشایی (Decode):وقتی‌که یک دستور واکشی شد در واحدی به نام ثبت دستورالعمل (Instruction Register) ذخیره می‌شود و سی پی یو دستورالعمل‌ها را به یک واحد به نام رمزگشای دستورالعمل (مدار کدگشایی دستورالعمل) که با نام خارجی (Instruction Decoder) شناخته می‌شود ارسال می‌کند. در واحد رمزگشایی دستورات به سیگنال‌هایی تبدیل می‌شوند و برای اقدام‌های مختلف به واحدهای دیگر پردازنده فرستاده می‌شوند.اجرا (Execute):اجرا آخرین مرحله از سه مرحله عملکرد سی پی یو می‌باشد. در این مرحله دستورات رمزگشایی‌شده برای تکمیل فرآیند پردازش به قسمت‌های مربوطه در CPU ارسال می‌شوند و نتایج تکمیل فرآیند در بخشی به نام حافظه‌های ثبات نگهداری می‌شوند تا در دستورات بعدی به آن‌ها ارجاع شود.واحدهای یک پردازنده: واحد محاسبه و عملیات منطقی(ALU):واحد محاسبه و عملیات منطقی(ALU) یک مدار دیجیتالی پیچیده است که عملیات ریاضی و مقایسه‌ای را انجام می‌دهد و بعد از پردازش اطلاعات توسط ALU آن‌ها را حافظه کامپیوتر ارسال می‌نماید. چندین واحد محاسبه و منطق را می‌توان درCPU، GPU وFPU یافت. در برخی پردازنده‌های رایانه‌ای، ALU به AU وLU تقسیم می‌شود. AU عملیات حسابی را انجام می‌دهد و LU عملیات منطقی را انجام می‌دهد.واحد کنترل حافظه (CU):واحد کنترل یا CU مداری است که عملیات را درون پردازنده رایانه هدایت و مدیریت می‌کند و این امکان را به واحد محاسبه و منطق و همچنین دستگاه‌های ورودی و خروجی می‌دهد که چگونه می‌توانند به دستورالعمل‌های دریافت شده از یک برنامه پاسخ دهند. واحد کنترل با دریافت اطلاعات ورودی که آن را به سیگنال‌های کنترلی تبدیل می‌کند، کار می‌کند و سپس به پردازنده مرکزی ارسال می‌شود و پردازنده به سخت‌افزار متصل می‌گوید چه عملیاتی را باید انجام دهد. کارکردهایی که یک واحد کنترل انجام می‌دهد، به دلیل واریانس معماری بین تولیدکنندگان مختلف، به نوع CPU  بستگی دارد.واحد حافظه ثبات (Register):CPU های مختلف دارای حافظه ثبات‌های گوناگون می‌باشند. بعضی از رجیسترها برای نگهداری نتایج اعمال استفاده می‎شوند و بعضی دیگر به‌عنوان اشاره‌گر و برخی نیز برای اهداف دیگر می‌باشند. دستورالعمل‌ها مجاز هستند که با سرعتی برابر با 16، 32 یا 64 بیت پردازش شوند و به‌عنوان‌مثال اگر برنامه‌ای برای پردازش          دستورالعمل‌های 64 بیتی طراحی‌شده باشد، پردازنده‌ای با ثبت 32 بیتی قادر به اجرای آن برنامه نیست             اولین پردازنده اینتل 4004 بود که در سال 1971 معرفی شد. ریز پردازنده 4004 چندان قدرتمند نبود و تنها کاری که می‌توانست انجام دهد جمع و تفریق بود و همزمان تنها با 4 بیت کار می‌کرد. اما شگفت‌آور بود که همه چیز روی یک تراشه قرار داشت. قبل از 4004، مهندسان کامپیوترها را از مجموعه تراشه‌ها یا از اجزای گسسته مانند ترانزیستورها می‌ساختند. ریزپردازنده 4004 مجهز به یکی از اولین ماشین‌حساب‌های الکترونیکی قابل حمل بود.معماری پردازنده 4004طراحیRISC چیست؟کلمه RISC (ریسک) ساده شده یا مخفف عبارت Reduced instruction set  computing  به معنای &#34;مجموعه دستورات محاسباتی ساده شده&#34; یا &#34;مجموعه دستورات بهینه شده&#34; است. ریسک یکی از طراحی‌های پردازنده است که بر اساس ساده سازی و بهینه کردن مجموعه دستورات طراحی شده و به عبارت بهتر، بجای پردازش مجموعه‌ای از دستورالعمل‌های پیچیده، از دستورات بسیار ساده تر و بهینه تری برای پردازش استفاده می‌کند که باعث کارایی و عملکرد بسیار بهینه تر آن می‌شود. ریسک از روش لوله‌ای (Pipe-line) برای پردازش استفاده می‌کند. ARM از مهمترین معماری‌هایی است که همراه با این طراحی در بسیاری از پردازنده‌های از پیش نصب شده مورد استفاده قرار می‌گیرد.طراحی RISC از آن جایی شروع شد که طبق محاسبات مختلف شرکت Berkeley RISC، مشخص شد که کل دستورات موجود در سیستم عامل یونیکس (Unix)، تنها از ۳۰% دستورات قابل استفاده در ریزپردازنده Motorola 68000 که طبق طراحی CISC  (سیسک - در مقابل طراحیRISC که از مجموعه دستورات پیچیده تری استفاده می‌کنند؛ مثل معماری x86 اینتل) ساخته شده بود، استفاده می‌کرد. به این ترتیب ۷۰% از دستورات پیچیده تر این ریزپردازنده اصلاً مورد استفاده قرار نمی‌گرفت و در نهایت قسمتی از ریزپردازنده بلااستفاده باقی مانده و هسته‌های آن فضای بی موردی را اشغال می‌کنند چون بدیعی است که با افزایش امکانات پردازنده، فضای فیزیکی مورد استفاده نیز بیشتر می‌شود. همچنین مقداری از توان مصرفی آن نیز بیهوده بوده و باعث گرم شدن آن می‌شود.البته منظور از دستورات ساده این است که اکثر آن‌ها در یک سیکل پردازش می‌شوند بنابراین طراحی RISC بسیار ساده تر از طراحی‌های دیگری مانند CISC است. در ساختار RISC به دلیل همین سادگی، معمولاً فرکانس کاری پردازنده بیشتر از طراحی‌هایی مثل CISC ثبت می‌شود درحالی که در RISC دستورات به صورت ابتدایی، بهینه و کوتاه پردازش می‌شوند؛ بنابراین در فرکانس کلاک مشخص، معمولاً کارایی کمتری نسبت به طراحی CISC دارند. یکی دیگر از خصوصیات مهم طراحی ریسک دسترسی به حافظه  RAM است. درRISC دسترسی به داده‌های موجود در آدرس‌های مشخص از رم تنها به تعدادی دستور ویژه (Load/Store) محدود شده که امکان دسترسی به داده‌های رم را از طریق سایر دستورات غیرممکن می‌کند.برای مثال، فرض کنید که قصد ضرب کردن دو عدد را داریم توجه کنید که برای درک بهتر، همه چیز به صورت ساده بیان شده است. در حافظه RAM و در آدرس‌های a50 وa51 به ترتیب اعداد ۳ و ۲ ذخیره شده اند. با استفاده از دستورهای زیر در زبان اسمبلی و در طراحی RISC ، می‌توانیم این دو عدد را در یکدیگر ضرب کنیم:LOAD r1, a50LOAD r2, a51PROD r1, r2STORE a50, r1در دستور اول و دوم، به ترتیب داده‌های موجود در آدرس a50 و a51 را در ثبات‌های r1 و r2 ذخیره می‌کنیم. در خط سوم، این دو عدد را در یکدیگر ضرب کرده و در خط آخر هم این مقدار را در آدرس a50 می‌نویسیم. توجه کنید که کل این فرایند را در طراحی CISC می‌توانیم با استفاده از دستورMUL a50, a51 انجام دهیم.به خاطر همه این دلایل، برنامه‌هایی که برای طراحی ریسک ساخته می‌شوند اغلب طولانی تر نسبت به همان برنامه در طراحی سیسک بوده و امکان اجرا شدن برنامه‌ای که برای یک طراحی خاص ساخته شده، بر روی طراحی دیگر، قابل اجرا نیست. البته ممکن است برنامه از طریق کامپایلرهای چندمنظوره طوری ساخته شود که بر روی هر دو طراحی قابل اجرا باشد. مثل برنامه‌های اندروید (که از هسته لینوکس بر روی پردازنده‌های مبتنی بر ARM و طراحی RISC یا مبتنی برx86 و طراحی CISC ساخته شده اند) که قابل اجرا بر روی پردازنده‌های متفاوتی هستند.طراحی ریسک معایب خودش را نیز دارد از جمله؛ زیاد بودن رجیسترها، با این که سریع ترین حافظه‌های پردازنده هستند، باعث تاخیر در انتقال داده‌ها می‌شود. از طرفی به دلیل ساده بودن دستورات ریسک، این طراحی معمولاً نیاز به RAM  بیشتری نیز دارد.چرا استفاده از طراحی RISC بسیار رایج است؟ترانزیستورهای موجود در هر هستهRISC که برای پردازش منطقی مورد استفاده قرار می‌گیرد، بسیار کمتر از تعداد ترانزیستورهایی است که بر روی طراحی CISC استفاده می‌شوند. که سبب کاهش اندازه کامل شده پردازنده شده و در نتیجه به صورت قطعات کوچکتر می‌توانند در اغلب ابزارهای الکتریکی مورد استفاده قرار گیرند. همچنین ترانزیستور کمتر به معنای کاهش مصرف انرژی شده و باعث می‌شود پردازنده به نسبت، کمتر گرم شود.البته طراحی ریسک، ثباتی بیشتری در اختیار کاربران و برنامه نویسان قرار می‌دهد اگر چه از انواع مهم داده‌ها (مثلاً اعداد اعشاری) پشتیبانی نمی‌کند.همه این دلایل باعث می‌شوند که پردازنده‌های ساخته شده توسط طراحی RISC به خصوص همراه با معماری ARM هزینه تمام شده بسیار کمتری نسبت به پردازنده‌های  CISC  داشته باشند. به این ترتیب می‌توان از آن‌ها در اغلب دستگاه‌ها از تلفن‌های ثابت گرفته تا سوپرکامپیوترها استفاده کرد. البته بیشترین کاربرد این پردازنده‌ها در دستگاه‌هایی هستند که به نسبت، نیاز به پردازش و توان مصرفی کمتری دارند مانند تلفن‌های هوشمند، تبلت‌ها، ساعت‌های هوشمند و... .معماری‌ها مهمی که ازRISC استفاده می‌کنند:ریسک به خاطر مزایایی که دارد در اغلب پردازنده‌های کم هزینه استفاده می‌شود. از جمله معماری‌هایی که از طراحی ریسک استفاده می‌کنند عبارت اند از:ARMAtmel AVRAMD 29kIntel i860ARCBlack fin- یکروکنترلر ATXMEGA128A3 که از طراحی RISC استفاده می‌کند- پردازندهA4 اپل که از معماریARM با طراحیRISC استفاده می‌کندطراحی CISC چیست؟کلمه CISC (سیسک) ساده شده و مخفف عبارتComplex instruction set computing  به معنای &#34;مجموعه دستورات محاسباتی پیچیده&#34; یا &#34;مجموعه دستورات پیچیده&#34; است. یکی از طراحی‌های پردازنده است که بر اساس جمع کردن مجموعه‌ای از دستورات سطح پایین (Low-level) به عنوان تنها یک دستور ساخته شده است و در مقابل طراحی RISC قرار دارد. در این طراحی مجموعه‌ای از دستورات ساده و ابتدایی مثل خواندن از حافظه، انجام عملیات محاسباتی و ذخیره کردن در حافظه، در یک دستور جمع می‌شوند یعنی بجای نوشتن تک تک این دستورات، می‌توانیم از یک دستور استفاده کنیم x86 وx64 از مهمترین معماری‌هایی هستند که با این طراحی در بسیاریمجموعه دستورالعمل های پردازنده های CISCدستورالعمل های CISC ماهیت پیچیده ای دارند و بیش از یک کلمه را در حافظه اشغال می کنند. همانطور که RISC از Load/Store برای دسترسی به عملوندهای حافظه استفاده می کند، CISC نیز دارای دستورالعمل Move برای دسترسی به عملوندهای حافظه است.اما برخلاف Load and Store، عملیات Move در CISC دامنه وسیع تری دارد. دستورالعمل های CISC می توانند &#34;مستقیماً به عملوندهای حافظه دسترسی داشته باشند&#34;.فرمت کلی دستور Move استMove destination, sourceمی تواند یک عملوند فوری را به یک مکان حافظه یا یک ثبات منتقل کند.Move A, 100Move R, 100می تواند عملوند را بین دو مکان حافظه منتقل کند.Move A, Bمی تواند عملوند را بین دو ثبات انتقال دهد.Move R1, R2شامل پنج حالت آدرس دهی اساسی مانند:حالت فوری، حالت مستقیم/مطلق، حالت ثبت، حالت غیر مستقیم و حالت نمایه.مجموعه دستورالعمل CISC دارای چند حالت آدرس دهی اضافی است. اینها «حالت افزایش خودکار»، «حالت کاهش خودکار» و «حالت نسبی» هستند.حالت افزایش خودکار:در اینجا، آدرس مؤثر یک عملوند، محتوای رجیستر است. پس از دسترسی به محتوای رجیستر، به طور خودکار افزایش می یابد تا مکان حافظه عملوند بعدی مشخص شود.حالت کاهش خودکار:در اینجا نیز، آدرس مؤثر یک عملوند، محتوای رجیستر است. اما در اینجا ابتدا محتوای رجیستر کاهش می یابد و سپس محتوای رجیستر به عنوان یک آدرس موثر برای عملوند استفاده می شود.حالت نسبی:این شبیه به &#34;حالت ثبت شاخص&#34; است که در آن آدرس موثر با افزودن یک ثابت به محتوای ثبت همه منظوره به دست می آید. در حالت نسبی به جای یک ثبات همه منظوره، از شمارنده برنامه استفاده می شود. این نوع حالت آدرس دهی برای ارجاع محدوده وسیعی از ناحیه در حافظه استفاده می شود.اکنون در بالا ذکر کردیم که پردازنده CISC تعداد دستورالعمل ها را به حداقل می رساند که طول کد را نسبتاً کوتاهتر می کند.اجازه دهید ببینیم چگونه دستورالعمل های سبک CISC طول کد را به حداقل می رساند؟فرض کنید ما یک عملیات داریمA= B+CMove A, BAdd A, Cهدف چهار دستورالعمل سبک RISC تنها با دو دستورالعمل سبک CISC برآورده می شود.بنابراین می توان گفت که معماری CISC به طور موثر تعداد دستورالعمل های برنامه را به عنوان یک اجرای دستورالعمل به حداقل می رساند، چندین دستورالعمل سطح پایین را در یک برنامه اجرا می کند.سیسک طراحی‌ای است که زبان‌های سطح بالا را بوجود می‌آورد. البته نباید از معایب آن نیز گذشت. برای مثال، بسیاری از دستورات پیچیده در طراحی سیسک اغلب استفاده نمی‌شوند و از طرفی، هزینه تولید پردازنده‌هایی که برپایه طراحی سیسک هستند، بسیار بیشتر است و تعداد رجیستری عمومی آن نیز کم هست                                                                  در طراحی سیسک امکان استفاده از قابلیت پردازشی لوله‌ای (Pipe-line) وجود ندارد؛ چون دستورات به دلیل پیچیدگی‌هایی که دارند اندازه‌ها و فرم داده‌هایی که خواهند خواند مشخص نیست. به علاوه، دستورات در طراحی CISC در چرخه‌های متفاوتی پردازش می‌شوند. برای مثال ممکن است دستوری در یک چرخه و دستور دیگری در ۶ چرخه تکمیل شود. به این ترتیب استفاده از پایپ لاین در طراحی سیسک بر خلاف طراحی با وجود نداشتن قابلیت پایپ لاین، سرعت در پردازنده‌های طراحی شده برپایه سیسک بیش از پیش اهمیت خود را نشان خواهد داد. برای مقایسه سرعت پردازنده‌های سیسک می‌توان از فرمول زیر استفاده کرد که در سه حالت مختلف بیان می‌شود. در این فرمول، نتیجه همان زمان لازم برای اجرای کامل برنامه است. البته به دلیل اینکه ممکن است برخی از دستورات در چرخه‌های متفاوتی اجرا شوند، از این فرمول نمی‌توان به صورت دقیق برای محاسبات استفاده کردپارامتر اول (&#34;تعداد دستورات در برنامه&#34;) تنها از طریق خود برنامه قابل تغییر است. ممکن است برنامه‌ای نوشته شود که دارای ۱۰۰ دستور یا ۱۰۰۰۰۰ دستور باشد. در طراحی سیسک، تلاش بر این است که این پارامتر کمتر شود. یعنی تعداد دستوراتی که در برنامه وجود دارند، کمتر شوند. البته می‌دانیم که در مقابل، CPI آن بیشتر خواهد شد.پارامتر دوم (&#34;تعداد چرخه در هر دستور&#34;) نشان دهنده تعداد چرخه‌ای (Cycle) است که برای اجرا کردن یک دستور استفاده می‌شود. در طراحی سیسک، سعی بر این می‌شود که روند افزایشی این پارامتر را در مقابل پارامتر اول، کندتر کند.پارامتر سوم (&#34;تعداد چرخه در یک ثانیه&#34;) اغلب به معماری و طراحی فیزیکی پردازنده بستگی دارد و همان فرکانسی است که هنگام خرید یک پردازنده ذکر می‌شود؛ مثلاً پردازنده ۲.۴ گیگاهرتزی (GHz).چرا CISC مورد نیاز بسیاری از کاربران است؟پردازنده‌هایی که بر پایهCISC طراحی می‌شوند معمولاً در اغلب کامپیوترهای شخصی، لپتاپ‌ها وسرورها یافت می‌شوند دلیل آن هم کارایی بهتر و بهینه تر بودن آن برای برنامه نویسان است. با استفاده از طراحی سیسک که از دستورات پیچیده تری استفاده می‌کند، برنامه نویسان می‌توانند برنامه‌ها و اپلیکیشن‌های کوچکتری ساخته و از قدرت پردازشی بیشتر سیسک استفاده کنند.علاوه بر قدرت پردازشی بیشتری که پردازنده‌های سیسک دارند، به دلیل همین طراحی پیچیده، سیستم‌هایی که برپایه آن کار می‌کنند، نیاز به حافظه کمتری دارند.درمقابل، سیسک دارای دستورات زیادی است که این حجم از دستورات باعث گستردگی اندازه فیزیکی این طراحی نسبت به  RISCشده است و همین امر باعث افزایش بسیار زیاد تعداد ترانزیستورهایی می‌شود که برای پردازش منطقی مورد استفاده قرار می‌گیرند و در نتیجه هزینه تولید آن نیز به مراتب افزایش می‌یابد. همچنین این تعداد از ترانزیستورها و کنترل کننده‌ها نیازمند انرژی زیادی هستند که انرژی مصرف شده و در نهایت گرمای حاصل را زیاد می‌کند.به دلیل این که بسیاری از برنامه‌ها و سیستم عامل ها برای معماری x86 ساخته می‌شوند که از طراحیCISC استفاده می‌کند، همچنین به دلیل کارکرد بهترCISC نسبت به RISC، طراحی RISC نمی‌تواند جایگزین طراحی  CISC در سیستم‌های شخصی، لپتاپ‌ها و سیستم‌های پیشرفته که نیاز به پردازش مجموعه بزرگی از داده‌ها و دستورات را دارند، شود. از طرفی به خاطر همه این دلایل، سیسک نیز نمی‌تواند جایگزین طراحی ریسک شود. به عبارت دیگر، RISC در ابزارهای کوچک که نیاز به پردازش و مصرف انرژی کم دارند و CISC در ابزارهایی که نیاز به پردازش زیاد و سریع دارند، کاربرد بهتری دارد.معماری‌ها مهمی که ازCISC استفاده می‌کنند:سیسک به خاطر مزایایی که دارد در اغلب پردازنده‌های PC و سایر پردازنده‌هایی که نیاز به پردازش سنگینی دارند، استفاده می‌شود. از جمله معماری‌هایی که از طراحی سیسک استفاده می‌کنند عبارت اند از:x86 و (x64)Motorola 68000z/ArchitectureIBM System/360پردازنده AMD از خانواده FX که از طراحی CISC و معماری x64 استفاده می‌کنندپردازنده Core i7 4770k اینتل با طراحی CISC ومعماری x64</description><category>مهدی سلامی</category><author>مهدی سلامی</author><pubDate>Tue, 28 Dec 2021 14:08:33 +0330</pubDate></item><item><title>بد افزار ها و کیت های تشخیص آن</title><link>https://virgool.ir/@m_50942595/بد-افزار-ها-و-کیت-های-تشخیص-آن-pvc0n3vwzklh</link><description>مقدمه:بدافزار یک برنام متخاصم و سرزده است که بدون کسب اجازه از کاربر دستگاه به‌صورت مخفیانه اقدام به دسترسی به منابع آن می‌کند. این برنامه شامل توابعی مخرب برای صدمه واردکردن به دستگاه است. این برنامه‌ها می‌توانند بدون کسب اجازه وارد دستگاه شده و باعث مداخله در امور سامانه و دست‌کاری در پیکربندی خاص در سیستم‌عامل گردند. به طور معمول کاربرانِ معمولی تمامی این نرم‌افزارهای مخرب را «ویروس» می‌نامند و تفاوتی را از لحاظ عملکرد بین آنها قائل نمی‌شوند، در صورتی‌ که انواع مختلفی از نرم‌افزارهای مخرب در دنیای رایانه وجود دارند و هر کدام دارای عملکردی متفاوت از دیگری هستند. نخستین بدافزار «وﻳﺮوس» در ﺣﺪود ﺳﺎل 1900 ﺗﺸﺨﻴﺺ داده ﺷﺪ ﻛﻪ آن را ﻛﺮم رایانه‌ای می‌نامیدند. پس‌ از آن، اﻧﻮاع ﺑﺪاﻓﺰارﻫﺎی دﻳﮕﺮ ﺗﻮﺳﻂ ﻧﻮﻳﺴﻨﺪﮔﺎن آنها ﺗﻮﻟﻴﺪ ﺷﺪ ﻛﻪ به‌ مرور زمان ﺑﺎ اﺳﺘﻔﺎده از اﺑﺰارﻫﺎ و روش‌های «ﻣﺒﻬﻢ‌ﺳﺎزی» پیچیده‌تر ﺷﺪﻧﺪ به‌گونه‌ای ﻛﻪ اﻣﺮوزه ﺗﺸﺨﻴﺺ آنها ﺑﺴﻴﺎر دﺷﻮار ﺷﺪه اﺳﺖبد افزار ها در قالب یک تصویرمفهوم بدافزار: بدافزارها که در اصطلاح کلی به نرم‌افزارهای مخربی گفته می‌شود که با هدف‌های مختلفی از جمله جمع‌آوری اطلاعات حساس، دسترسی به دستگاه‌های رایانه‌ای خصوصی و در برخی موارد تخریب سامانه‌ها در شکل‌های گوناگون مانند اسکریپت، کد، محتوای فعال و... طراحی‌شده و با کمک عوامل انسانی یا به‌صورت خودکار و به شیوه‌های خاص و رسانه‌های چندگانه در بین رایانه‌ها منتشر می‌شوند.انواع بدافزار: برای دسته‌بندی بدافزارها تقسیم‌بندی‌های مختلفی وجود دارد. یکی از این ‌دسته‌بندی‌ها توسط شرکت کسپرسکی انجام‌شده است.1)ویروس: ویروس‌ها دسته‌ای از ﻛﺪﻫﺎی ﻣﺨﺮب ﻫﺴﺘﻨﺪ ﻛﻪ ﻣﺸﺨﺼه اﺻﻠﻲ آنها خود‌همتاسازی ﻫﻨﮕﺎم اﺟﺮا ﺑﻪ ﻫﻤﺮاه ﺑﺮﻧﺎمه ﻣﻴﺰﺑﺎن هستند. ﭘﺲ از اﺟﺮای ﻳﻚ وﻳﺮوس، زمینه آﻟﻮده ﻛﺮدن دﻳﮕﺮ برنامه‌ها ﻳﺎ ﻣﺴﺘﻨﺪات ﻧﻴﺰ ﻓﺮاﻫﻢ می‌گردد. ﺑﻪ برنامه‌ای ﻛﻪ ﻛﺪ وﻳﺮوس ﺑﻪ آن افزوده‌شده ﺑﺎﺷﺪ ﺑﺮﻧﺎمه آﻟﻮده ﻣﻲﮔﻮﻳﻨﺪ. 2)ﻛﺮم: یکی دیگر از برنامه‌های مخرب کرم‌ها هستند که می‌توانند خود را به طور پنهانی در یک شبکه انتشار داده و منتقل شوند. اثرگذاری کرم‌ها متفاوت از بدافزارهاست چرا که ویروس‌ها برای جابه‌جایی خود نیاز به یک پرونجای کمکی دارند در حالی‌که کرم‌ها با استفاده از شبکه و یا ارسال از طریق رایانامه ناخواسته آلوده، خود را پخش می‌کنند. نمونه‌ای از کرم‌ها، Conficker است.3)تروجان: این دسته از بدافزارها قادر به دست‌یابی از راه دور به رایانة کاربر برای مقاصد خود از جمله جاسوسی و کسب اطلاعات حساس هستند. تروجان‌ها سعی می‌کنند در ابتدا اطلاعات حساسی مانند گذرواژه‌ها را به سرقت برده و فعالیت کاربر را مشاهده کنند و در مراحل بعدی حتی پرونجا‌های دستگاهی رایانه را تخریب نمایند.4)اکسپلوت: اگر نفوذگری با استفاده از بررسی کردن یک برنامه و یا حتی یک گام جلوتر با اجرای کدهای آن در برنامة خود بتواند خطاهایی را که از دید برنامه‌نویس و گروه نظارت امنیت پنهان مانده است مانند سرریز بافر را کشف کند و همان را تبدیل به حفره‌ای برای نفوذ به دستگاه کند این عمل را استثمار‌کردن دستگاه نامند که شامل انواع مختلفی استتشخیص بدافزار: برای ایجاد امنیت کامل در یک دستگاه رایانه‌ علاوه بر دیوارة آتش و دیگر تجهیزات جلوگیری از نفوذ، دستگاه‌های دیگری به نام «سیستم‌های تشخیص نفوذ» مورد نیاز هستند تا بتوانند در صورتی‌که نفوذگر از دیوارة آتش، ضدبدافزار و دیگر تجهیزات امنیتی عبور کرد و وارد دستگاه شد آن را تشخیص داده و چاره‌ای برای آن بیندیشند.پیدا کردن سوزن در انبار کاه«سیستم‌های تشخیص نفوذ» برای کمک به مدیران امنیتی مجموعه برای کشف نفوذ و حمله به کار گرفته‌ شده‌اند. هدف یک «سیستم تشخیص نفوذ» تنها جلوگیری از حمله نیست بلکه باید به کشف و شاید شناسایی حمله‌ها و تشخیص اشکالات امنیتی در سامانه یا شبکة رایانه‌ای و اعلام آن به مدیر شبکه نیز بپردازد. «سیستم‌های تشخیص نفوذ» در کنار دیواره‌های آتش و به‌صورت مکمل امنیتی برای آنها مورد استفاده قرار می‌گیرند. امروزه دو روش اصلی برای تشخیص نفوذ به شبکه‌ها مورد استفاده قرار می‌گیرد.الف) مبتنی بر امضا:روش تشخیص بر اساس امضا که یک روش با ماهیت ایستاست به این منظور و مقابله با بدافزارهایی با رشد روزانه توسط ضدبدافزار‌هایی به‌کار گرفته می‌گردد. یک امضا مجموعه‌ای از یک‌رشته باینری منحصربه‌فرد است که از ساختار بدافزار حاصل می‌شود. این امضا ممکن است از روش‌های ایستا، پویا و ترکیبی حاصل گردد؛ اما به دلیل اینکه هر روز بدافزار جدید ساخته و کشف می‌شوند، لازم است تا امضای مربوط به آنها هم بعد از تولید در پایگاه دادة امضا ذخیره گردد. این به روز رسانی مکرر یکی از نقاط اصلیِ‌ ضعف روش مبتنی بر امضاست؛ که در هر مرحله از به‌روز‌رسانی تعداد مقایسه‌های بین اعضای پایگاه داده امضا و برنامه مورد بررسی افزایش می‌یابدب) تشخیص بر اساس رفتار: بر خلاف روش ایستا که بر روی کد بدافزارها تکیه می‌کند، رفتار زمان اجرا را مورد توجه قرار می‌دهد. در واقع تجزیه ‌و تحلیل یک برنامه در زمان اجرای آن را تجزیه ‌و تحلیل پویا می‌نامند که به تجزیه‌ و تحلیل رفتارها نیز معروف است و شامل اجرای نرم‌افزار و مشاهده رفتار آن، تعامل مجموعه و آثار آن روی دستگاه میزبان است. روش تجزیه ‌و تحلیل پویا نیاز به اجرای پرونجا‌های آلوده در یک محیط مجازی؛ مانند یک ماشین مجازی، یک شبیه‌ساز جعبه‌شن و... دارد تا بتواند آن را آنالیز کندمقابله با بدافزارها و نرم‌افزارهای جاسوسی: باوجود شبکه اینترنت و رسانه‌های ذخیره‌ساز قابل ‌حمل سرعت انتشار بدافزارها بسیار زیاد شده است حتی با وجود ضد‌بدافزارهای به‌روز در برخی موارد قادر به پاک‌سازی بدافزارها به‌صورت خودکار نیستیم به دلیل اینکه نویسندگان این‌گونه نرم‌افزارها به طور دائم در حال تلاش برای استفاده از روش‌های دفاعی در برابر ضدبدافزارها و نیز پاک‌کردن دستی آنها هستند. بدافزارهای نگاشته شده در دوره‌های اخیر با استفاده از قوی‌ترین الگوریتم‌های رمزنگاری به دستگاه قربانی نفوذ می‌نمایند. پس از آلوده‌شدن دستگاه بازیابی با مشکلات و هزینة فراوانی انجام خواهد شد؛ بنابراین، بهترین راه مقابله، جلوگیری از آلوده‌شدن به آنهاست.برای مقابله با نفوذ بدافزارهای جاسوسی موارد ذیل مطرح است:الف) پیشگیری: مهم‌ترین مسئله در رویارویی با بدافزارها، آگاهی افراد از این تهدید و پیشگیری از آن است.ب‌) اطلاع‌رسانی و آموزش کاربران برای پرهیز از رفتار خطرناک: می‌بایست آموزش‌های کافی به کاربران از طریق ویدیوها و بروشورهای آموزشی برای پرهیز از رفتارهای خطرناک نظیر باز‌کردن پرونجاهای پیوست رایانامه، مراجعه به پایگاه‌های اینترنتی ناشناس یا کلیک روی لینک‌های مشکوک و غیره ارائه شود.ج‌) پشتیبان‌گیری منظم: مهم‌ترین و مؤثرترین رکن در مقابله با بدافزارهای باج‌گیر، داشتن پشتیبان‌های منظم دوره‌ای و غیرمتصل است. مقصود از پشتیبان غیرمتصل، این است که رسانه‌هایی که اطلاعات روی آن پشتیبان گرفته می‌شود، باید پس از انجام عملیات پشتیبان‌گیری از سامانه جدا شود تا در صورت آلوده‌شدن به بدافزارها، خود اطلاعات پشتیبان رمزگذاری نشوند. مهم‌ترین داده‌ها عبارت‌اند از:سیستم‌عامل‌ها و سامانه‌‌های فعالداده‌های عملیاتی و حساسبسیاری از بدافزارها به‌خصوص بدافزارهای باج‌گیر علاوه بر رمز‌کردن پرونجاها و اطلاعات معمول، اطلاعات پشتیبان و حتی پوشه‌های اشتراکی شبکه و مانند آن را نیز رمز می‌کنند تا همة اطلاعات در دسترس رمز شده و قربانی مجبور به پرداخت باج گردد. بدیهی است تنها پشتیبان‌گیری منظم کافی نیست و حتماً باید با انجام بازیابی‌های دوره‌ای از امکان انجام بازیابی صحیح و بدون مشکل در صورت وقوع حوادث اطمینان حاصل نمود. پشتیبان‌گیری تنها روش تضمینی جلوگیری از تهدید بدافزارهای باج‌گیر به شمار می‌رود.نکته مهم: همچنین باید نسبت به صحت و سلامت کامل نسخه‌های پشتیبان اطمینان حاصل کرد.الف) امن‌سازی سامانه‌هانصب و به‌روز کردن ضدبدافزارنصب و استفاده از ابزار خاص ضدبدافزارپیکربندی امن سیستم‌عامل و نرم‌افزارها Opcode روشی نوین برای تشخیص بد افزاررمزهای عمل ( یا کدهای عملیاتی opcode) به عنوان یک متغیر پیشگو برای تشخیص بدافزار مبهم شده یا دگرگون شده عمل می کنند. برخی از رمزهای عمل ( به عبارتی move یا push)، دارای فراوانی بالای ظهور در بدافزار و نرم افزارهای قابل اجرا هستند، به همین خاطر درجه تشابه حاصله (براساس فراوانی رمز عمل) بین دو فایل می تواند تا حدی تحریف شود. بنابراین، راهی برای اجتناب از این پدیده پیشنهاد و به هر رمز عمل ارتباطی اعطا می کنیم که واقعاً دارای آن می باشد.بدین طریق بدافزار را جمع آوری و بدین طریق مجموعه داده بدافزاری متشکل از 131899 بدافزار قابل اجرا تشکیل می دهیم. این مجموعه داده تنها حاوی فایل های قابل اجرای PE می باشد و به شکلی درست تر، از انواع و اقسام نرم افزارهای خرابکار ساخته شده است ( مثلاً ویروس های کامپیوتری، اسب های تروجان، جاسوس افزار، و غیره). برای مجموعه داده نرم افزار بی خطر، 13000 فایل قابل اجرا از کامپیوترها جمع آوری کرده ایم. این مجموعه داده بی خطر به طور مثال، شامل پردازنده های لغت، ابزارهای ترسیم، بازیهای پنجره، جستجوگرهای اینترنتی، برنامه نشان دهنده pdf و غیره می شود.در این بخش مراحل زیر برای محاسبه ارتباط هر رمز عمل را اجرا می کنیم. ابتدا، فایل های قابل اجرا را مجزا می کنیم. در این مرحله،  ابزار اصلی دستیابی به فایل های اسمبلی استفاده کرده ایم. ثانیاً، با استفاده از فایل های اسمبلی تولید شده، یک فایل پروفایل رمز عمل ساخته ایم. مخصوصاً، این فایل حاوی لیستی با کد عملیاتی و فراوانی غیر نرمال در هر دو مجموعه داده می باشد ( به عبارتی مجموعه داده نرم افزار بی خطر و مجموعه داده نرم افزار خرابکار). بالاخره، ارتباط هر رمزعمل را براساس فراوانی ظهورش در هر دو مجموعه داده محاسبه می کنیم. تا این حد، از (اطلاعات متقابل)  استفاده می کنیم. اطلاعات متقابل معیاری است که وابستگی آماری دو متغیر را نشان می دهد.در این مورد خاص، دو متغیر را به شکل فراوانی رمزعمل و نمونه بدافزار تعریف می کنیم. بدین طریق، X فراوانی رمزعمل و Y کلاس فایل (به عبارتی بدافزار یا نرم افزار بی خطر)،  تابع توزیع احتمال مشترک(توام) X و Y ،  و  توابع توزیع احتمال نهایی X و Y هستند.به علاوه، به محض محاسبه اطلاعات متقابل بین هر رمز عمل و کلاس قابل اجرا( بدافزار نرم افزار بی خطر) و مرتب کردن آنها، یک فایل ارتباط رمزعمل ایجاد کردیم. بدین طریق این لیست از ارتباط رمز عمل به ما کمک می کند تا به تشخیص درست تری از تغییرات بدافزار نائل گردیم زیرا توانایی وزن کردن تابع تشابه با استفاده از ارتباط رمز عمل محاسبه شده و کاهش نویز تولید شده توسط رمزهای عمل نامربوط را داریم. نتایج و کار آتیتشخیص بدافزار به خاطر رشد زیادش در سالهای گذشته، به یک عنوان تحقیق و نگرانی تبدیل شده است. روشهای امضای کلاسیکی مورد استفاده فروشندگان آنتی ویروس موثر عمل نمی کنند، زیرا تعداد زیادی از بدافزارهای جدیدآنها را بلااستفاده جلوه می دهند. بنابراین این تکنیک باید با روشهای پیچیده تری تکمیل گردد که گونه های بدافزاررا در تلاش برای تشخیص نمونه های بدافزار بیشتر با یک امضا تشخیص می دهند.در این مقاله، روشی برای تشخیص گونه های بدافزار پیشنهاد کردیم که برای ساخت نمایش برداری نرم افزارهای قابل اجرا، بر توالی های رمز عمل تکیه نمود. بدین طریق براساس توالی هایی با طول های مختلف، سیستم توانایی تشخیص رفتار خرابکارانه(مخرب) گونه های بدافزار را داشت. مخصوصاً آزمایشات نشان داده است سیستم توانایی های زیر را دارد. اولاً، سیستم توانایی شناسایی گونه های بدافزار را داشت. ثانیاً، توانایی تمایز نرم افزارهای قابل اجرای بی خطر را داشت.توسعه آتی این سیستم تشخیص بدافزار در سه جهت اصلی جهت یافته است. اولاً، بر مواجهه با نرم افزارهای قابل اجرای بسته بندی شده با استفاده از شیوه ایستایی- پویای مرکب یا هیبریدی تاکید می کنیم. ثانیاً، ویژگیهای بکاررفته را با استفاده از توالی های طولانی تر و اطلاعات بیشتر مثل فراخوان های سیستم، توسعه می دهیم. بالاخره، آزمایشاتی با مجموعه داده بدافزار بزرگتر انجام می دهیم.</description><category>مهدی سلامی</category><author>مهدی سلامی</author><pubDate>Thu, 24 Dec 2020 13:37:18 +0330</pubDate></item></channel></rss>