Name Obfuscation
Obfuscation
می تواند اولین پروتکشن رسمی
.net
باشد چرا که ویژوال استادیو با نسخه
رایگان
dotfuscator،
release
شد.
Name Obfuscation
چطور
application
هایمان را
protect
می کند؟
همانطور که همگی می دانیم
.net
همه چیز ( تمام اسامی اسمبلی، ماژول ها،
متدها و بطور خلاصه همه چیز) را در قالب
metadata
ذخیره می کند و تمام این
metadata
در فایل اجرایی (
PE
) ذخیره می شود بنابراین به راحتی می شود
با استفاده از یک
decompiler
اطلاعات بیشتری را نسبت به
exe/dll
های
قدیمی
win32
بدست آورد. (در اینجا یک
word decompile
بهتر از یک
disassemble
است چرا که خود
msil
یک زبان سطح بالاست در مقابل
asm)
نتیجه اینکه این فایل ها بسیار قابل
خواندن هستند درست مثل خواندن
source code
اصلی.
Name Obfucator
از راه هایی مثل بی معنا کردن رشته ها،
غیر قابل چاپ کردن رشته ها، خیلی طولانی
کردن رشته ها و یا فقط حذف کردن رشته ها
اسامی را به کاراکتر های مبهم و غیر قابل
خواندن و پرینت گرفتن تبدیل می کند.
حال اگر کسی با استفاده از یک
reflector
سعی در
decompile
برنامه ای داشته باشد که با یک
obfuscator
تجاری
protect
شده است، با شکست مواجه خواهد شد چرا که
از کاراکترهای موجود به هیچ نتیجه ای
نخواهد رسید. البته اسامی مبهم را می توان
به رشته های با معنی تبدیل کرد مثل
method2،
TextBox3
اما نکته قابل توجه این است که در اینجا
منظور از رشته های با معنی، تنها رشته های
قابل خواندن است نه رشته های اولیه!
خوشبختانه به خاطر شیوه ترجمه
obfuscation
نمی توان رشته ها را به رشته های اصلی
برگرداند.