Obfuscate برنامه Silverlight خود را با Dotfuscator
درباره Dotfuscator
Dotfuscator مبهم کننده ای است که خواندن کد منبع را زمانی دشوار می کند که برنامه های کاربردی نوشته شده با دات نت فریم ورک از هم بجنگند. Dotfuscator در دسترس است در هر دو نسخه های خرده فروشی رایگان و پرداخت شده است که با ویژوال استودیو می آیند.
نسخه رایگان تنها با بسیاری از ویژگی های محدود و این فرض که ویژوال استودیو در حال اجرا است در دسترس است، اما هر کسی با ویژوال استودیو نصب شده می تواند از آن استفاده کند. نسخه پرداخت شده دارای ویژگی های مبهم قدرتمند زیادی است که در نسخه رایگان در دسترس نیست، اما ممکن است آزاردهنده باشد که با قیمتی ارائه می شود که استطاعت آن برای عموم مردم دشوار است.
Dotfuscator ممکن است ویژگی های مختلف، قیمت گذاری، و نسخه بسته به نسخه داشته باشد، بنابراین لطفا برای جزئیات بیشتر به وب سایت زیر مراجعه کنید.
کد تجزیه شده
همانطور که در بالا ذکر شد، برنامه های کاربردی ایجاد شده با چارچوب .NET به راحتی می توانند کد منبع اصلی را با disassembling بخوانند، اما آنچه در واقع اتفاق می افتد این است که هنگامی که شما یک فایل مونتاژ را به عنوان نشان داده شده در شکل، بسیاری از کد منبع اصلی مانند فضای نام، نام کلاس، و نام روش را می توان تکثیر کرد.
روش مبهم کردن
شروع با ایجاد برنامه Silverlight به طور معمول و انجام ساخت انتشار. در اینجا، ما در حال ایجاد یک برنامه کاربردی است که تنها دو دکمه قرار می دهد.
در پوشه Bin\Release پوشه ای که پروژه در آن قرار دارد، تایپ کنید. xap" یک فایل بسته است که خلاصه برنامه ها و فایل های مورد استفاده در برنامه های سیلورلایت است.
در واقع، این فایل فشرده شده و به عنوان یک فایل ZIP کامپایل شده است، بنابراین پسوند ". zip".
به یک فایل ZIP تغییر یافته است.
وقتی فایل را باز می کنید، شامل یک فایل آشکار و یک DLL است. این DLL نسخه کامپایل شده برنامه ای است که به عنوان یک برنامه اجرا می شود.
به هر حال ، فایل DLL نیز در پوشه انتشار قرار داده شده است زمانی که آن را ساخته شده است ، بنابراین این بار ما این فایل را مبهم.
از منوی Visual Studio، Tools را انتخاب کنید و سپس PreEmptive Dotfuscator And Analytics را انتخاب کنید.
هنگامی که برای اولین بار شروع می شود، گفتگوی "توافقنامه مجوز" نمایش داده می شود، بنابراین محتویات را با دقت بخوانید، "بله، من توافق نامه مجوز را می پذیرم" را بررسی کنید." و روی دکمه "OK" کلیک کنید.
PreEmptive Dotfuscator And Analytics CE شروع می شود.
"ورودی ها" را از درخت سمت چپ انتخاب کنید و روی دکمه "افزودن ورودی" کلیک کنید.
انتخاب فایل DLL که شما در طول ساخت تولید شده است.
فایل DLL را که اضافه کرده بودید انتخاب کنید و حالت کتابخانه را > تغییر دهید.
اگر "حالت کتابخانه" بررسی شود، کلاس ها و روش های تعریف شده در عموم مبهم نمی شوند.
در صورتی که "تبدیل"اتس" بررسی شود، کلاس های تعریف شده در وینترز مبهم خواهند شد، اما بسته به اینکه چگونه آن را ایجاد می کنید، باعث خطای راه اندازی خواهد شد، بنابراین اگر رخ داد، لطفاً آن را علامت گذاری کنید.
اساساً تمام کلاس ها، روش ها، خواص و نام های متغیر مبهم هستند، اما اگر نمی خواهید به دلیل سریال سازی، یک فضای نام یا کلاس خاص را مبهم کنید، "تغییر نام" را از درخت سمت چپ انتخاب کنید، زبانه "Exclude" را انتخاب کنید، و فضای نام یا کلاس هدف را بررسی کنید.
تحت قوانین داخلی، مطمئن شوید که زمینه ها برای Silverlight و WPF UserControls بررسی می شود. چک کردن این کار زمینه UserControls را مبهم خواهد کرد و با موفقیت اجرا خواهد شد. شما می توانید آن را چک کنید اگر به نظر می رسد به درستی کار می کنند حتی پس از مبهم.
هنگامی که شما به پایان رسید، با کلیک بر روی دکمه "پروژه ساخت" از نوار ابزار.
اگر تغییراتی در پروژه وجود داشته باشد، گفتگوی تأیید ذخیره پروژه نمایش داده می شود، بنابراین برای ذخیره روی "بله" کلیک کنید.
این پروژه "" نامیده می شود. xml" file. فایل های مبهم در همان مکان ذخیره می شوند.
صبر کنید برای ساخت برای تکمیل آن را به عنوان شروع می شود. توجه داشته باشید که هر چه برنامه بزرگتر باشد، ساخت آن بیشتر طول می کشد. هنگامی که آن را مانند شکل به نظر می رسد، ساخت کامل است.
زمینه پیام پیشرفت ساخت و نتیجه کوتاهی مانند اینکه چقدر مبهم بود را نشان می دهد.
اگر نتایج را از درخت سمت چپ انتخاب کنید، می توانید جزئیات مربوط به نحوه تغییر نام کلاس و روش را ببینید.
در زیر نام های کلاس و روش، یک آیکون Dotfuscator و نام هایی مانند "a" و "b" وجود خواهد داشت که نام مبهم خواهد بود. با تغییر نام کلاس یا نام روش به یک نام بی معنی در این روش، حتی اگر از هم جدا شود، می تواند خواندن محتویات کد منبع را دشوار کند.
فایل مبهم در پوشه ای به نام "Dotfuscated" در پوشه فایل ذخیره شده .xml ذخیره شده در Save Project ایجاد شده است. علاوه بر فایل مبهم، یک فایل "نقشه.xml" ایجاد شده است، اما این نتیجه مبهم سازی است و استفاده نمی شود.
اگر فایل مبهم را از هم دور کنید، می بینید که برخی از نام های کلاس و روش به "a" یا "b" تغییر کرده اند.
این بار پروژه پیش فرض ایجاد شده تقریبا همان طور که بود مبهم شد، بنابراین فکر می کنم تصویری وجود دارد که آنقدر مبهم نیست، اما فکر می کنم اثر مبهم سازی روشن تر می شود چون با رشد پروژه تعداد کلاس ها و غیره افزایش می یابد.
به عنوان يک کنار ، . کتابخانه های NET Framework و مشمول تغییر نام نیستند زیرا مجالس هستند که از قبل بر روی ویندوز نصب شده اند، به عنوان مثال.
Silverlight از DLLs as-is استفاده نمی کند، بنابراین آنها به عنوان فایل های XAP بسته بندی شده اند. همانطور که در ابتدا گفته شد، یک فایل XAP فقط یک تغییر در پسوند فایل ZIP است، بنابراین با جمع آوری فایل های موجود در فایل XAP و DLLs مبهم، یک فایل ZIP ایجاد می کند.
ایجاد فایل ZIP می تواند با استفاده از ویژگی های استاندارد OS انجام شود.
یک فایل ZIP ایجاد شده است.
پسوند به 'تغییر می کند. xap" و اگر نام فایل متفاوت است، آن را به نام فایل بسته اصلی تغییر دهید.
پرونده XAP را در محل توزیع قرار دهید.
لطفا عملیات را بررسی کنید و ببینید که آیا آن را به درستی کار می کند.
اگر شروع نشد، بررسی کنید تا زمانی که به طور معمول با کاهش کد مبهم کار کند. توجه داشته باشید که Silverlight اغلب در مسائل مربوط به طول مدت گیر می شود.
اگرچه دستورالعمل ها در اینجا ذکر نشده اند، اما اگر می خواهید برنامه ای را امضا کنید، آن را در حالتی که با تاخیر امضا شده است بسازید، مجمع را مبهم کنید و سپس دوباره امضا کنید. حتی اگر شما آن را مبهم در حالی که آن را امضا شده است، کد امضا متصل شده در زمان ساخت و کد امضا پس از مبهم سازی مطابقت نخواهد داشت، بنابراین شما قادر به شروع آن نخواهد بود.
در این مقاله مراحل را برای نسخه رایگان ذکر کرده اند، اما اگر از نسخه پرداخت شده استفاده کنید، می توانید مبهم سازی پیچیده تری انجام داده و از خود disassembly جلوگیری کنید. با این حال، مبهم شدن این پتانسیل را دارد که اثرات نامطلوب مختلفی ایجاد کند، بنابراین هنگامی که مبهم ساخته می شود، باید در نظر گرفت که آیا از ابتدای طراحی به درستی کار خواهد کرد یا نه.