موضوع مقاله: مبهم‌سازی کد | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # مبهم‌سازی کد | مقدمه: در توسعه نرم‌افزار مبهم‌سازی کد به مبهم سازی (و یا مشوش سازی) عامدانه کد منبع یا کد ماشین به شکلی که درک آن برای انسان سخت باشد، گفته می‌شود. | ## بخش 1: مبهم‌سازی کد | در رأس آن‌ها، زبان‌هایی از قبیل C، C++ و Perl انتخاب‌های اول برای مبهم سازی هستند. با این کار دستورها و ترکیبات اصلی را طوری تغییر می‌دهند که دیگر برای خواننده قابل‌هضم نباشد. در این میان برنامه‌هایی بانام «مبهم ساز» نیز وجود دارند که پس از گرفتن کد منبع یا کد شیء آن را بسته به هدفی خاص به شکل خودکار مبهم سازی می‌کنند. مبهم سازی کدها در اکثر موارد برای جلوگیری از عمل مهندسی معکوس صورت می‌گیرد و برنامه‌نویس با انجام این عمل خطر دسترسی غیرمجاز به کدهای منبع را تا حد قابل‌توجهی کاهش می‌دهد. با انجام این عمل می‌توانند جلوی تحقق پیدا کردن هدف‌هایی چون ترجمه دوباره برنامه و تغییر کنترل آن یا یافتن آسیب‌پذیری‌ها را گرفت. مبهم‌سازی تفریحی خواندن و نوشتن کدهای مبهم، همچون یک بازی ذهنی برای برنامه نویسان لذت بخش است. از همین روی تعدادی مسابقه برنامه‌نویسی همچون مسابقه بین‌المللی کدنویسی مبهم به زبان سی، مسابقه کدنویسی مبهم به زبان پرل و مسابقه بین‌المللی کدنویسی مبهم به زبان روبی ایجاد شده و به خلاقانه‌ترین کد مبهم‌سازی شده جوایزی اهدا می‌کند. | ## بخش 2: مبهم‌سازی کد | روش‌ها روش‌های گوناگونی برای تولید کدهای مبهم شده وجود دارند، از روش‌های معمولی که بیشتر استفاده می‌شوند می‌توان موارد زیر را نام برد: استفاده کردن و نکردن از فاصله‌های سفید برای تولید یک کد هنرمندانه که مفهومی (در اکثر موارد مفهومی مرتبط با کد، به‌طور مثال خروجی کد) خاص را می‌رساند. جمله‌ای که بعدها در امضای اکثر برنامه نویسان پرل به چشم می‌خورد و بعدها آن را JAPH خواندند. مزایای مبهم‌سازی کد مبهم‌سازی خودکار کد مزایای قابل شمارشی دارد که بهره‌گیری از آن در پلاتفرم‌های گوناگون را محبوب کرده‌است. در برخی زبان‌های برنامه‌نویسی سطح بالا (همچون جاوا، اندروید و دات نت) مترجم‌های وارون رایگان به سادگی می‌توانند کدماشین یا یک کتابخانه را مهندسی معکوس کرده و به کد منبع بازگردانند؛ بنابراین بزرگترین مزیت مبهم‌سازی خودکار کدها، محافظت از حقوق معنوی نهفته در نرم‌افزار است، به‌طوری‌که با پیچیده و سخت سازی عمل مهندسی معکوس، آن را از لحاظ اقتصادی پرهزینه می‌سازد. از دیگر مزیت‌های مبهم‌سازی کدها می‌توان به کمک در محافظت از مکانیزم پروانه نرم‌افزار در برابر دسترسی غیرمجاز و فشرده سازی کد ماشین اشاره کرد. معایب مبهم‌سازی کد درحالی که مبهم‌سازی کدها، خواندن، بازنویسی یا مهندسی معکوس کدها را مشکل و غیر اقتصادی می‌کند، لزوماً آن را غیرممکن نمی‌سازد. علاوه بر این مبهم سازی کدها ممکن است جهت مخفی سازی یک عمل خرابکارانه صورت بگیرد، از این رو برخی نرم‌افزارهای ضدبدافزار همچون AVG در صورت مشاهده یک کد مبهم‌سازی شده به صورت دستی، به کاربر هشدار می‌دهد. | ## بخش 3: مبهم‌سازی کد | با این حال ممکن است برخی توسعه دهندگان از مبهم‌سازی برای افزایش امنیت دسترسی غیرمجاز به کدها یا کاهش اندازه باینری نهایی بهره بگیرند، از این رو کاربران معمولی نباید انتظار داشته باشند که نرم‌افزارهای ضدبدافزار در صورت مشاهده یک تکه کد مبهم‌سازی شده بی‌ضرر، هشدار تولید کنند. نرم‌افزارهای مبهم‌سازی در حال حاضر ابزارهای گوناگونی جهت مبهم‌سازی خودکار کدها موجود است. این نرم‌افزارها ابزارهای تحقیقاتی ایجاد شده توسط دانشگاهیان، ابزارهای سرگرمی، محصولات تجاری ایجاد شده توسط تولیدگران حرفه‌ای و نرم‌افزارهای منبع باز را شامل می‌شود. بیشتر ابزارهای مبهم‌سازی با تغییر ساختار و شمایل کد منبع و یا کدمیانی (همچون بایت‌کدهای استفاده شده در جاوا و دات‌نت) کار خود را پیش می‌برند، با این حال ابزارهایی جهت مبهم سازی مستقیم کد ماشین نیز موجود است. مبهم‌سازی و پروانه کپی‌لفت در گذشته مناظره ای دربارهٔ دربارهٔ قانونی یا غیرقانونی بودن نشر کد منبع به صورت مبهم سازی شده تحت پروانه کپی‌لفت در جریان بود، چرا که در این رویکرد نویسندهٔ کد، رضایت کمتری از انتشار کدهای خود دارد. | ## جمع‌بندی | این مسئله در پروانه عمومی همگانی گنو برطرف شد، در این پروانه کد منبع به یک نسخه برگزیده از کد منبع گفته می‌شود و کد مبهم‌سازی شده یک کد منبع واقعی محسوب نمی‌شود.