PDA

View Full Version : طراحی یک آنتی ویروس



مهدی رحیم زاده
جمعه 26 مهر 1387, 21:53 عصر
سلام
چند وقتیه که تصمیم دارم یک آنتی ویروس خوب طراحی کنم . دنبال منابع در این موردم . اگه کسی تو این زمینه با سی شارپ کار کرده لطف کنه و راهنمایی کنه ممنون میشم .
با تشکر

مهران رسا
جمعه 26 مهر 1387, 22:45 عصر
یادمه در بخش VB قبلاً خیلی بحث در این مورد شده بود که بیایم یک آنتی ویروس فارسی به صورت گروهی بنویسیم . ولی متاسفانه هیچ کدوم به نتیجه نرسیدن . یه مدت بحث داغ میشد و کلی پیشنهاد مطرح میشد . ولی بعد از گذشت مدتی روند کار متوقف میشد . به نظر من انجام یک همچین کاری از طرف کاربران برنامه نویس واقعاً نیاز هست .
در پروژه های این چنینی ، تنها علاقه توجیهی برای صرف زمان و هزینه هاست !

اگه تمایل به کار گروهی دارین من آماده همکاری هستم .

Mehdi Asgari
جمعه 26 مهر 1387, 23:05 عصر
http://barnamenevis.org/forum/showthread.php?t=116901
http://www.openantivirus.org/
http://www.clamwin.com/ (این خیلی جالبه. کدش C++ هست. از Python هم استفاده کرده)
این نمی دونم چیه ، ببین به درد می خوره: http://msdn.microsoft.com/en-us/library/bb204055(EXCHG.80).aspx
فکر نمی کنم در یک محیط managed قادر به نوشتن همچین چیزی باشیم. چون مسئله درایور نویسی و کد کرنل و ... (که فقط از پس C++ بر می یاد) پیش می یاد. مگر این که فقط یک Virus Finder بنویسیم که اونم بر اساس signature فایل ها رو اسکن کنه. به هر حال هر زبانی را بهر کاری ساختن.

Armin060
جمعه 26 مهر 1387, 23:25 عصر
حق با mehdi311ggg (http://barnamenevis.org/forum/member.php?u=12705) است. برای نوشتن يك آنتی ويروس نياز به يك مترجم برای نرم افزار های سيستمی داريم. مثل همين ++C. به هيچ صورت نميشه با VB يا #C اين كار رو انجام داد. راست كارش فقط ++C و اسمبلی هست.

2khordad
جمعه 26 مهر 1387, 23:58 عصر
من خودم برنامه نویس تاحدودی حرفه ای C# هستم یه روز همین فکر به سرم زد ولی وقتی از چندتا مهندس و حرفه ای پرسیدم همون حرف های mehdi311ggg (http://barnamenevis.org/forum/member.php?u=12705) رو زد ولی گفتش شما می تونید همون کد های C++ رو با کمی تغییر و ساخت تعدادی فایل و درایور و ... تو c++ و به کار گیری اونها در سی شارپ این کار رو انجام بدین البته برنامه ای با کیفیت پایینی ساخته می شه برا همین این روش پیشنهاد نمی شه.

combat1964
شنبه 27 مهر 1387, 01:34 صبح
مطالعات خودتون رو بیشتر متوجه file Signature و file type detection متمرکز کنید البته توی مبحث realtime بودن آنتی ویروس می بایست در خصوص agent ها تاکید داشته باشید

مهدی رحیم زاده
شنبه 27 مهر 1387, 07:11 صبح
خوب پس باید یا بهتره بگم بهتره که از C++ استفاده کنیم .اما قبلش باید در مورد الگوریتم کار به یه جاهایی برسیم .
M8SPY عزیز
مطمئنن کار گروهی همیشه بهترین نتیجه رو میده . من این کار رو توی شرکت مطرح کردم و قرار شد که انجامش بدم . اما دیدم که بهتره به صورت گروهی انجامش بدیم . برا همین اینجا مطرحش کردم . حالا اگه دوستان تمایل همکاری داشته باشن ، خوشحال میشم به عنوان شاگرد با شما اساتید محترم همکاری داشته باشم .

Armin060
شنبه 27 مهر 1387, 15:09 عصر
نوشتن يك آنتی ويروس كار ساده نيست. اون هم فقط نبايد با ++C بنويسيم، بلكه بايد ( فكر كنم ) با MFC بنويسيم و كمی هم اسمبلی تا سرعت زياد بشه

مهدی رحیم زاده
شنبه 27 مهر 1387, 15:21 عصر
هیچ کاری آسون نیست . اما اگه بخوای میتونی.
منم می خوام تلاشم تا جایی که می تونم انجام بدم . حالا دوستان تو این زمینه هر مطلبی که داشت باشن ما با جان و دل پذیراییم که بگن کجاست تا بخونیمش .

adinochestva
شنبه 27 مهر 1387, 15:46 عصر
خیلی وقتها نوشتن مهم نیست
چرا نوشن و چگونه نوشتن مهم هست
اگه کسی ایده خاصی داره اون وقته که با ارزش می شه . استفاده از signature کافی نیست
حتما باید IA داشته باشه
به هر حال اگه پا گرفت منم هستم
اینم ببینید بد نیست :
http://sourceforge.net/search/?type_of_search=soft&words=anti+virus

Armin060
شنبه 27 مهر 1387, 17:15 عصر
بهتره كه اين تاپيك به بخش C++\MFC منتقل بشه.

Mehdi Asgari
شنبه 27 مهر 1387, 17:20 عصر
ولی گفتش شما می تونید همون کد های C++ رو با کمی تغییر و ساخت تعدادی فایل و درایور و ... تو c++ و به کار گیری اونها در سی شارپ این کار رو انجام بدین البته برنامه ای با کیفیت پایینی ساخته می شه برا همین این روش پیشنهاد نمی شه.
یعنی چی ؟ شاید منظورشون این بوده که UI رو در سی شارپ بنویسید؛ بعید می دونم کسی که برنامه نویس VC++ باشه ، حاضر به انجام همچین کاری بشه. (لااقل به خاطر non-native بودن ، حالا اگه نگیم پرفورمنس یا مشکل چندزبانه شدن)


بايد ( فكر كنم ) با MFC بنويسيم
نه لزوما


حالا دوستان تو این زمینه هر مطلبی که داشت باشن ما با جان و دل پذیراییم که بگن کجاست تا بخونیمش .
کتاب The Art of Virus Research and Defense (http://www.amazon.com/Computer-Virus-Research-Defense-Symantec/dp/0321304543) رو حتما بخون.
اینا هم جزو واجبات این کارن:
Windows Internals
Windows Via C++
Developing Drivers with the Microsoft Windows Driver Foundation
من خودم مدت هاست به این فکر هستم ، ولی هنوز وقت پیدا نکردم. اینطور نمیشه. اگه کسی واقعا مشتاق و بااراده است ، خودش قدری از کار رو به تنهایی انجام بده ، پس از این که به جایی رسید که تونست ازش جواب بگیره ، بذارتش تو جایی مثل codeplex یا sf . اون وقت بقیه میرن contribute می کنن.
همینطور نمیشه که.
جسارت نشه خدمت دوستان ، ولی خود من اگه بخوام این کار رو بکنم ، یا کاری رو که گفتم می کنم ، یا هم که به ClamAV ، کانتریبیوت می کنم.

dark.lord
شنبه 27 مهر 1387, 20:56 عصر
فکر می کنم نوشتن یک آنتی ویروس نیاز مبرمی به یک زبان برنامه نویسی خاص نداشته باشه... من شخصا در کنار آنتی ویروس های معطبر از آنتی ویروس KillU که با استفاده از CُُُS نوشته شده استفاده می کنم. طراح این آنتی ویروس هم یکی از دانشجویان دانشگاه ارومیه هست(JBF). درسته که آنتی ویروس KillU قابل رقابت با آنتی ویروس های شرکت ها ی بزرگی چون : KASPER و یا NOD32 نیست ولی به نوعی یک آنتی ویروس شناخته می شه و قابلیت شناسایی و از بین بردن خیلی از ویروس ها رو هم داره و گزینه های رجیستری رو هم که توسط ویروس ها دستکاری شده رو ریکاور می کنه. کار شاقی نیست ولی در سطح خودش زیباست.در صورت نیاز اگر به من میل بزنید می تونم با اجازه ی طراح برنامه اون رو براتون میل بزنم.

مهدی رحیم زاده
شنبه 27 مهر 1387, 21:37 عصر
فعلا که این تاپیک داره غوغا می کنه .
دوستان مشارکت خیلی عالیی داشتن و اگه همینجوری ادامه بدیم مطمنا خیلی زود به نتیجه خوبی میرسیم .
با تشکر از تمامی اساتید و دوستان

Armin060
شنبه 27 مهر 1387, 22:03 عصر
فکر می کنم نوشتن یک آنتی ویروس نیاز مبرمی به یک زبان برنامه نویسی خاص نداشته باشه... من شخصا در کنار آنتی ویروس های معطبر از آنتی ویروس KillU که با استفاده از CُُُS نوشته شده استفاده می کنم. طراح این آنتی ویروس هم یکی از دانشجویان دانشگاه ارومیه هست(JBF). درسته که آنتی ویروس KillU قابل رقابت با آنتی ویروس های شرکت ها ی بزرگی چون : KASPER و یا NOD32 نیست ولی به نوعی یک آنتی ویروس شناخته می شه و قابلیت شناسایی و از بین بردن خیلی از ویروس ها رو هم داره و گزینه های رجیستری رو هم که توسط ویروس ها دستکاری شده رو ریکاور می کنه. کار شاقی نیست ولی در سطح خودش زیباست.در صورت نیاز اگر به من میل بزنید می تونم با اجازه ی طراح برنامه اون رو براتون میل بزنم.

دوست عزيز يك آنتی ويروس رو قفط ميشه با مترجم های سيستمی نوشت كه فكر ميكنيم در زمان حال جز زبان ماشين و اسمبلی و ++C مترجم سيستمی ديگه ای نباشه. اون هم كه با #C نوشته بود، احتمالا آنتی ويروس نبوده، فقط اشكالات رجيستری رو برطرف ميكرده و به يكسری فايل ها كه مشكوك بودند گير ميداده. اما اساس كار آنتی ويروس اين نيست. اساس رو در پست های بعدی براتون ميگم. ( البته تا حدی اساس كار يك آنتی ويروس شبيه به همونی هست با #C نوشته شده بود )

Mehdi Asgari
شنبه 27 مهر 1387, 23:35 عصر
http://www.securityfocus.com/infocus/1552



فکر می کنم نوشتن یک آنتی ویروس نیاز مبرمی به یک زبان برنامه نویسی خاص نداشته باشه...
پس باید دید تعریفتون از آنتی ویروس چیه. چیزی که دوستتون نوشته ، بیشتر به یه On-Demand Scanner میمونه تا یک آنتی ویروس.
(شاید برنامه دوستتون بتونه یه سری فایل های آلوده رو تشخیص بده (تازه اگه database داشته باشه) یا مشکلات رجیستری رو درست کنه ولی مطمئنا از روی رفتار ویروس ها قادر به تشخیص اون ها نخواهد بود. مثل تلاش یک پروسس برای مثلا اجرای کدی از خارج code section یا jump کردن به همچون جایی (entry point obscuring))
به نظر من باید برای مقابله با چیزی ، ابتدا خودش رو بلد باشیم. پس باید ویروس نویسی رو یاد بگیریم (و تکنیک های مختلف و جدیدش رو مثل پلی مورفیسم (http://en.wikipedia.org/wiki/Polymorphic_code) و متامورفیسم (http://en.wikipedia.org/wiki/Metamorphic_code) و ... بلد باشیم)

Armin060
یک شنبه 28 مهر 1387, 06:08 صبح
آقا يه كاری. ما كه اولين بارمون هست، فعلا يه آنتی ويروس با همون #C بنويسيم، بعد كه بهتر اومد دستموم بعد با ++C بنويسيم. البته با #C نميشه آنتی ويروس نوشت، اما حداقل از Windows Security كه ميتونيم سرويس بگيريم.

مهدی رحیم زاده
یک شنبه 28 مهر 1387, 22:24 عصر
هر جور که فکر می کنید بهتره !
فقط لطف کنین و منابع رو معرفی کنید
بعضی از دوستان هم قبول زمت کردن و قول همکاری رو دادن

hs1988
دوشنبه 28 دی 1388, 12:04 عصر
اگه کسی تو این زمینه کار کرده من هم قول میدم تا یه جاهایش را برم

مهدی رحیم زاده
دوشنبه 28 دی 1388, 14:33 عصر
من هم هستم اما سرم خیلی شلوغه .
یکی لطف کنه و رهبری کنه و دیگران هم همکاری
با تشکر

sia_2007
دوشنبه 28 دی 1388, 14:53 عصر
دوستان وقتی سرویس Symantec End Point رو نمیشه Kill کرد و وقتی به فایلهای سیستمی حمله میشه این آنتی ویروس گزارش میده؛ یا خیلی از کارهای دیگه؛ به نظر من از طرف سیستم عامل پشتیبانی میشه.
اون روزی رو که ویستا داشت میومد تو بازار؛ بحث این بود که مایکروسافت باید هر چه زودتر قسمتهای مورد نیاز آنتی ویروس نویسان از کدهای ویندوز رو باید در اختیار اونها قرار بده.
تو اونها آنتی ویروس متناسب با ساختار ویستا رو ارائه بدند.
یه آنتی ویروس حداقل نیاز به یک ویندوز سرویس داره تا از همان ابتدای کار امنیت سیستم رو برقرار کنه.
و هم چنین نوعی سپر که نشه پراسسش رو kill کرد.
این مسائل به نظرم میرسه بد نیست بهشون توجه کنید.
موفق باشید