Reflector نام نرم افزاری است که توسط آن می توانید برنامه های نوشته شده به زبان های NET. (ویژوال بیسیک ، #C ، …) را Decompile کنید . به طور کلی برنامه های نوشته شده به زبان دات نت پس از کامپایل به کد هایی به نام IL تبدیل می شن . از این رو توسط ابزار های خاصی مانند Reflector ، Fox ، Dis sharp میشه فایل های اجرایی ایجاد شده رو Decompile کرد . به عبارت ساده تر تا حدود %70 به کد اولیه برنامه دسترسی پیدا کرد . در واقع میشه گفت این قضیه معنای کد اجرایی (exe) رو تا حدودی نقض می کنه . برای روشن تر شدن موضوع یک مثال مطرح می کنم :

کد زیر رو در نظر بگیرید . کد رو به زبان #C ودر محیط Visual Studio می نویسیم .

        private void Form1_Load(object sender, EventArgs e)
        {
            int a, b;
            int c = 0;
            string outx = "";
            a = 8;
            b = 4;
            c = a + b;
            outx = Convert.ToString(c);
            MessageBox.Show(outx);
        }

پس از کامپایل کد و تبدیل به فایل اجرایی اون رو توسط نرم افزار رفلکتور ، DeCompile می کنیم و نتایج رو مشاهده می کنیم :

private void Form1_Load(object sender, EventArgs e)
{
    int num3 = 0;
    int num = 8;
    int num2 = 4;
    num3 = num + num2;
    MessageBox.Show(Convert.ToString(num3));
}

همونطور که مشاهده می کنید تنها شکل ظاهری کد ها تغییر کرد . برای مثال ما در کد اصلی برای تبدیل مقدار int به string از یک متغیر کمکی استفاده کردیم در صورتی که کد Decompile شده به صورت خلاصه تری در اومده.


--------------------------------------------------------------------------------

و اما راه حل جلوگیری از این مشکل چیه ؟
توصیه من استفاده از نرم افزاری به نام Smart Assembly هست . با استفاده از این obfuscator قدرتمند می تونید تا مقدار زیادی کدتون رو مبهم کنید . به طوری که حتی در مواردی Decompile کردن اون هم کاری غیر ممکن خواهد بود .

نتایج مبهم کردن فایل اجرایی توسط نرم افزار Smart Assembly به شرح زیر است :

——– اطلاعات دریافت شده توسط نرم افزار رفلکتور : Module contains unkown meta-data stream
——– حجم فایل اجرایی قبل از عملیات مبهم سازی : 8 کیلوبایت
——– حجم فایل اجرایی بعد از انجام عملیات مبهم سازی : 132 کیلوبایت