برنامه های کاربردی مبهم ایجاد شده با استفاده از Dotfuscator (Visaul استودیو 2022 نسخه)
خلاصه
برنامه های کاربردی بر اساس سری چارچوب های .NET در آنچه که یک زبان میانی مشترک نامیده می شود ایجاد می شوند، بنابراین می توان آن ها را به صورت نزدیک به کد منبع اصلی با استفاده از ابزارهای disassembly و مانند آن خواند. این بخش چگونگی مبهم کردن کلاس ها و نام های روش را به فرمت های به راحتی غیرقابل خواندن با استفاده از نسخه رایگان Dotfuscator، ابزار مبهم کننده ای که همراه با ویژوال استودیو است، توصیف می کند.
با استفاده از ویژوال استودیو ۲۰۲۲ توصیف شده است، اما می توان از آن در نسخه های دیگر داتفوسکاتور نیز استفاده کرد.
محیط عامل
- ویژوال استودیو
-
- ویژوال استودیو 2022
درباره Dotfuscator
Dotfuscator یک ابزار مبهم سازی است که خواندن کد منبع را دشوار می کند زمانی که برای برنامه های کاربردی نوشته شده با خانواده دات نت چارچوب ها (که پس از آن به عنوان .NET به آن اشاره می شود) از هم گسست. Dotfuscator همراه با ویژوال استودیو به صورت رایگان و برای هزینه.
نسخه رایگان در دسترس نیست مگر اینکه بسیاری از ویژگی های آن محدود باشد یا ویژوال استودیو آغاز شده باشد، اما هر کسی می تواند تا زمانی که ویژوال استودیو نصب شده است از آن استفاده کند. نسخه پرداخت شده دارای ویژگی های مبهم قدرتمند زیادی است که در نسخه رایگان یافت نمی شوند، اما با قیمتی ارائه می شود که استطاعت آن برای عموم مردم دشوار است.
Dotfuscator دارای ویژگی های مختلف، قیمت ها، و نسخه های بسته به نسخه، بنابراین لطفا به صفحه اصلی زیر برای جزئیات مراجعه کنید.
درباره Disassembly
من قبلا اشاره کرد که برنامه های کاربردی نوشته شده در .NET به راحتی می تواند از هم گسیختن و خواندن کد منبع اصلی ، اما آنچه در واقع اتفاق می افتد این است که اگر شما disassemble فایل .exe (یا .dll فایل) همانطور که در شکل زیر نشان داده شده است ، شما تقریبا می توانید کد منبع اصلی تکثیر ، مانند نام خانوادگی ، نام کلاس ، نام روش ، و غیره.
انواع برنامه هایی که باید مبهم شوند
عمدتاً در مورد برنامه هایی که برای کاربران نامشخص توزیع و اجرا می شوند، صدق می کند. به عنوان مثال برنامه های کاربردی رومیزی. برعکس، برنامه های کاربردی وب که دسترسی مستقیم به فایل های برنامه مشکل دارند، برای مبهم شدن کمتر مهم هستند.
این بار به پروژه ای در WPF نگاه می کنیم که یک برنامه رومیزی است.
نصب Dotfuscator
این نرم افزار همراه با ویژوال استودیو 2022 اما در نصب استاندارد گنجانده نشده است (در برخی از استودیوهای ویژوال گذشته ممکن است از ابتدا نصب شده).
برای اضافه کردن یک Dotfuscator: شروع Visaul استودیو و ابزار و ویژگی های دریافت از ابزار را انتخاب کنید.
"اجزای فردی" را از زبانه بالا انتخاب کنید، "حفاظت پیش گیرانه - Dotfuscator" را در گروه "ابزارهای کد" بررسی کنید، و روی دکمه Install در گوشه پایین سمت راست کلیک کنید. در هنگام انجام این کار، کنسول ویژوال استودیو را ببندد.
روش مبهم کردن
مراحل گیج کننده و مبهم کردن این نام ها را توصیف می کند.
ایجاد نرم افزار در ویژوال استودیو ، ساخت .exe فایل ، و سپس کلیک کنید. ایجاد یک فایل dll. تا کنون این همان ایجاد یک کاربرد منظم است. برنامه ای که ایجاد می کنید باید برای برنامه هایی که در ساخت Release ایجاد شده اند در نظر گرفته شود. (چون معمولاً در Debug منتشر نمی کنید.)
پس از ایجاد .exe یا .dll، ابزارها را از منوی Visual Studio انتخاب کنید، و سپس PreEmptive Protection - Dotfuscator Community را انتخاب کنید.
صفحه ثبت نام نمایش داده می شود، اما لازم نیست، بنابراین اگر غیر ضروری است، دکمه لغو را همان طور که هست کلیک کنید.
باقی بماند و روی دکمه OK کلیک کنید.
دوتفوسکاتور شروع ميشه . این برنامه به خود کار می کند، بنابراین شما می توانید فایل هایی را که مربوط به پروژه در حال حاضر باز نیست، مبهم کنید. (در مورد نسخه رایگان خود برنامه، فرض بر این است که ویژوال استودیو آغاز شده است.) )
در این مقاله، من یک پروژه برنامه کاربردی WPF .NET 6.0 ساخته شده با پیش فرض به عنوان یک نمونه را مبهم می کنم.
"ورودی" را از لیست سمت چپ انتخاب کنید و روی دکمه "+" کلیک کنید.
فایل برنامه ای را که می خواهید مبهم کنید انتخاب کنید. برنامه های کاربردی نوشته شده در چارچوب .NET اغلب .exe مبهم کرده اند، اما در .NET و .NET Core، برنامه ها اغلب .dll هستند. برنامه های کاربردی NET WPF نیز دارای .dll خواهند بود، بنابراین .dll.
به لیست اضافه خواهد شد. اگر از چند DLLs تشکیل شده است، بیش از یک اضافه کنید.
پس از افزودن فایل هدف، روی دکمه "Build" از نوار ابزار کلیک کنید.
از شما خواسته می شود که فایل پروژه مبهم را از کجا ذخیره کنید، بنابراین آن را مشخص کنید. مکان می تواند دلخواه باشد، اما می تواند محل خروجی یک برنامه مبهم نیز باشد. ورودی شما را ذخیره می کند و اگر بخواهید دوباره آن را مبهم کنید، این فایل پروژه مبهم سازی را باز خواهد کرد. پسوند ". xml".
اگر ساخت آغاز شده است و "ساخت تکمیل شده" در پیام زیر نمایش داده شده است، آن را نشان می دهد تکمیل موفق است. صفحه نمایش ورود به سیستم ساخت و یک لیست از کلاس ها و متغیرهای مبهم.
"نتیجه" را از لیست سمت چپ انتخاب کنید تا جزئیات چگونگی تغییر نام کلاس و روش را ببینید.
نام های طبقاتی و نام های روش در درخت سمت راست، مانند "->"، نام های پس از مبهم سازی هستند. با تغییر نام کلاس یا نام روش به یک نام بی معنی مانند این، شما می توانید محتویات کد منبع را دشوار به خواندن حتی اگر آن را disassembled.
برنامه های مبهم در پوشه ای به نام "Dotfuscated" در جایی که فایل پروژه را ذخیره کرده اید ذخیره می شوند.
نقشه.xml یک فایل نتیجه مبهم سازی است، بنابراین شما می توانید با خیال راحت آن را حذف کنید.
از آنجا که .NET 6.0 WPF را نمی توان توسط DLL به تنهایی آغاز شده ، کپی "XXXX.exe" و "XXXX.runtimeconfig.بکشید" تولید شده در زمان ساخت خروجی به همان پوشه و شروع آن. اگر شما می توانید به طور معمول شروع, هیچ مشکلی برای زمان وجود دارد. اگر نمی توانید آن را شروع کنید، ممکن است فایل های گمشده ای باشید یا ممکن است در حال ایجاد برنامه ای باشید که به دلیل مبهم شدن ناهماهنگ می شود.
اگر برنامه ای را که در واقع مبهم شده است تجزیه و تحلیل کنید، آثاری از مبهم شدن را خواهید دید. ورق اول شکل زیر قبل از مبهم شدن، و دومی پس از مبهم شدن است.
توجه داشته باشید که نام های طبقاتی تعریف شده در کتابخانه های .NET منوط به تغییر نام نیستند زیرا به عنوان یک چارچوب وجود دارند.
این بار پروژه پیش فرض ایجاد شده را آنطور که هست مبهم کردم، بنابراین فکر می کنم تصویری وجود دارد که تقریبا مبهم نیست، اما فکر می کنم اثر مبهم سازی روشن می شود چون هر چه پروژه بزرگتر باشد کلاس های منحصر به فرد بیشتری افزایش خواهند یافت.
همچنین، اگر چه ما این روش را در نسخه رایگان این بار گنجانده شده است، نسخه پرداخت شده اجازه می دهد تا برای مبهم سازی پیچیده تر و همچنین جلوگیری از خود disassembly. با این حال، مبهم شدن اثرات نامطلوب مختلف و پتانسیل رخ می دهد، بنابراین هنگامی که مبهم انجام می شود، لازم است آن را در حالی که با توجه به اینکه آیا آن را به درستی از ابتدای طراحی کار خواهد کرد.
مبهم شدن را مستثنی کنید
اگر شما نام کلاس یا اموال است که شما نمی خواهید به مبهم، شما می توانید آنها را مستثنی.
در حالی که مونتاژ لود شده است، تغییر نام > حذف از سمت چپ صفحه انتخاب کنید. از آنجا که محتویات مجمع نمایش داده می شود، آنهایی را که نمی خواهم مبهم کنم بررسی می کنم.
این امکان وجود دارد به حذف مبهم در سطح دانه ای, اما من فکر می کنم آن را آسان تر به تنظیم آن را بر اساس فضای نام.
حالت کتابخانه
هنگامی که مونتاژ ورودی را انتخاب می کنید، می بینید که "حالت کتابخانه" بررسی می شود.
"حالت کتابخانه" برای ضمیمه کردن DLLs است که ممکن است توسط برنامه های دیگر فراخوانی شوند. در صورت بررسی، کلاس ها و املاک عمومی که توسط برنامه های دیگر فراخوانده می شوند، از مبهم شدن خارج می شوند.
با این حال، به طور کلی، افشای کتابخانه ای که به صورت generatively از برنامه های دیگر نامیده می شود، نادر است و من فکر می کنم که اغلب به برنامه هایی که به تنهایی کار می کنند مبهم است، بنابراین اشکالی ندارد که اساساً این چک را حذف کنیم.
مبهم سازی تک فایل .exe (تایید نشده)
تحقیقات در مورد این آیتم در ویژوال استودیو ۲۰۲۲ در حال حاضر تأیید نشده است.
این احتمالا مبهم با MSBuild خواهد بود، اما من آن را در انتظار قرار دادن به دلیل عدم اطلاعات در حال حاضر.