سلام. تو پست قبلی درباره یکی از روش های مخفی سازی ویروس یا در اصل Virus Code Encryption (از این به بعد با همین اصتلاح کار می کنیم) توضیح دادم که تقریبا روش خوبی بود. اما بزارید یه سری روش های دیگه رو هم که معمولا در Encrypt سازی ویروس ها از اونا استفاده می شه معرفی کنیم.
خوب فکر کنم با دیدن مثال قبلی (تو پست قبل) متوجه شده باشید که اصل ساختار Encrypting (به رمز درآوردن) به چه صورته. ابتدا کد ویروس رو به روش ها مختلف Encrypt می کنیم بعد کدی می نویسیم که با هر بار اجرای ویروس کد Encrypt شده رو Decrypt (از حالت رمزی خارج کردن) کنه و با استفاده از فرمان Execute اونو اجرا کنه حالا سایر روش های Encrypt سازی.
ببینید بیاید در این مرحله اصلا فکر کنیم که نمی خایم کد vb رو Encrypt کنیم. مثلا فکر کنید می خایید نامه ای رو که به دوستتون نوشتید رمزی کنید ( ای کلک)? خوب حالا چکار می کنید؟ یه روش اینکه تمام حروف رو یکی ببرین جلو مثلا "honey" تبدیل میشه به "ipofz"? درسته بقول معروف روش ازگل هاست ولی حتی استفاده از همین روش هم AV ها رو عاجز می کنه. بزارید یکم عملی ترش کنیم:
روش جمع/تفریق:
این روش شبیه همون روش بالاست یعنی مثلا حروف یک رشته رو یک یا هرچندتا که بخایم جلو یا عقب ببریم. دیگه فکر کنم اینقدر حرفه ای هستید که فقط نشون دادن مثال کافی باشه:
OldString = "This is a test!"
For i = 1 to Len(OldString)
NewString = NewString & Chr(Asc(Mid(OldString, i, 1)) + 23)
Next
این کد مقدار اسکی هر حرف از رشته OldString را به اندازه ?? واحد افزایش می دهد و آن را در متغییر NewString قرار می دهد. در پایان حلقه مقدار رشته NewString (مثلا یه چیزی مثل)? "ی?…??÷ا لت?ه?»غ" خواهد شد. مشکل این روش این است که روال عملیات Encryption با روال Decryption متفاوت است. یعنی برای از رمز در آوردن رشته جدید باید از روال زیر استفاده کنیم:
OldString = "ی?…??÷ا لت?ه?»غ"
For i = 1 to Len(OldString)
NewString = NewString & Chr(Asc(Mid(OldString, i, 1)) - 23)
Next
این روال رشته ما رو دوباره به صورت "This is a test!" در خواهد آورد. (ایندفه ?? تا کم می کنه) البته شما می تونید از مقادیر بیشتر یا کمتری برای اضافه یا کم کردن استفاده کنید اما بخاطر داشته باشید که مقادیر اسکی از ? تا ??? هستند و اگر مثلا شما مقدار اسکی کاراکتر "A" رو که ?? هست بعلاوه ??? یا منهای ?? بکنید از این محدوده خارج شدید و باعث ایجاد خطا هنگام اجرای برنامتون می شید.
فکر نمی کنم سخت باشه و فقط با یبار دوره میتونید اصلا خودتون یه همچین مقاله آموزشی بنویسید . ایندفه خیلی طولانی شد!! ولی هنوز حرفه ای ترین روش مونده که ایشاالله مقاله بعدی.