مبهم سازی Obfuscation
مبهم سازی یا Obfuscation چیست؟
مبهم سازی (Obfuscation) در حوزه توسعه نرم افزار به فرایند ایجاد سورس کدهایی گفته میشود که درک آنها برای انسان دشوار است. معمولا از روشهای مبهم سازی برای پنهان کردن هدف و منطق پشت پرده کد یا مقادیر گنجانده شده در آن استفاده میکنند و به این ترتیب احتمال مداخله و مهندسی معکوس را کاهش داده یا آن را به یک معما و سرگرمی برای افرادی تبدیل میکنند که قصد خواندن آن را دارند.
مبهم سازی ممکن است به صورت دستی یا با کمک ابزارهای مخصوصی موسوم به مبهم ساز (Obfuscator) انجام شود. این ابزارها بسته به زبان های مورد پشتیبانی قادر هستند روی فایل کامپایل شده یا سورس کد با روش های مختلف به ایجاد ابهام بپردازند. فراموش نکنید در هر حال با اِعمال مبهم سازی نباید عملکرد برنامه تغییر پیدا کند. علاوه بر این، تکنیک ها و ابزارهایی نیز وجود دارد که تلاش میکنند معکوس عمل مبهم سازی (Deobfuscation) را انجام دهند و از روی فایل اجرایی مبهم شده یا سورس کد مبهم شده به سورس اصلی و قابل درک دست پیدا کنند.

جالب است بدانید مسابقات برنامه نویسی معتبری (نظیر International Obfuscated C Code Contest) وجود دارد که در آنها به بهترین کدهای مبهم شده و خلاقانهترین روشها جوایزی داده میشود.
در نظر داشته باشید حتی اگر سورس برنامه را منتشر نمیکنید در بسیاری از موارد (نظیر برنامه های نوشته شده به زبان های دات نت و اپلیکیشن های اندروید) به راحتی میتوان با کمک دیکامپایلرها به سورس کد برنامه دست پیدا کرد. از همین رو پیش از انتشار یک نرم افزار اختصاصی، توصیه میشود از ابزارهای محافظت از کد استفاده کنید.
تکنیک ها و اهداف مبهم سازی
در مبهم سازی معمولا از عباراتی استفاده میشود که به افزایش پیچیدگی سورس کد میانجامد. نام گذاری متغیرها و توابع به صورت گمراه کننده یا بیمعنا، استفاده از کامنت های فریب دهنده یا نگارش بخشی از کد به شکلی که به نظر یک کامنت بیاید، کدگذاری رشته ها، حذف فراداده های راهنمایی کننده، حذف یا افزودن فاصله، ایجاد ابهام در Control Flow، اضافه کردن کدهای بیربط و نوشتن کد با فرم و شکلی جالب از جمله روشهایی است که برای این منظور به کار میرود.
در تصویر زیر مثالی از انجام یک مبهم سازی ساده به صورت خودکار را مشاهده میکنید که در آن صرفا با تغییر نام تابع و برخی از متغیرها همراه با رمزنگاری رشته، درک عملکرد کد دشوارتر شده است.

افزون بر جنبه های سرگرمی، چالش های ذهنی، محافظت در برابر مهندسی معکوس (تبدیل فایل کامپایل شده به سورس کد) و جلوگیری از ایجاد تغییرات در سورس کد به منظور استفاده در پروژههای نرم افزاری دیگر، مبهم سازی سورس کد در حوزه امنیت نیز مزایایی به همراه دارد. پنهان سازی بخشهای مهم امنیتی و دشوارسازی کشف آسیب پذیری ها یا راههای نفوذ از جمله این مزایا به شمار میروند.
از سوی دیگر، مخفی کردن کدهای مخرب در سورس کد یکی از کاربردهای منفی و مهم Obfuscation به شمار میرود چرا که در این صورت، شناسایی و درک هدف آنها به مراتب دشوارتر از حالت معمولی خواهد بود. همین موضوع میتواند به یکی از معایب کدهای مبهم شده به خصوص در مورد زبان های تفسیری تبدیل شود. برای مثال برخی از نرم افزارهای امنیتی در صورت شناسایی کدهای مبهم شده جاوا اسکریپت در صفحات وب به کاربر هشدار میدهند و به این ترتیب اعتبار سایت حاوی این کدها در میان کاربران مخدوش میشود.
در سایر حوزه ها
مبهم سازی صرفا به حوزه برنامه نویسی محدود نمیشود. به عنوان مثال در مورد ترافیک شبکه، این اصطلاح به روشهایی اشاره میکند که سعی دارند ترافیک واقعی شما را از دید دیگران پنهان کنند. چنین تکنیکهایی به خصوص هنگام اتصال به شبکه هایی کاربرد دارد که دسترسی به آنها از نظر نهادها و ارائه کنندگان خدمات شبکه مجاز نیست یا احتمال مسدودسازی آنها وجود دارد.
پیوندهای پیشنهادی تک دیک
سلام.. من در مورد سرور میخواستم بدونم که چیزی وجود نداشت چونکه وقتیکه از سرور obfuscation وی پی ان فیلتر و دور میزنم .. سرعت و طوری پایین میاره که کار نمیشه کرد..
سلام؛ متأسفانه افت سرعت هنگام استفاده از این سرویس ها به خصوص سرویس های با کیفیت پایین اتفاق متداولی هست. بسته به میزان کیفیت و تعداد سرورها و کاربرانی که به طور همزمان به سرور متصل می شوند ممکنه سرعت ارتباط اینترنتی شما کاهش پیدا کنه یا کیفیت و سرعت مناسبی داشته باشه. هرچند ممکنه در عملکرد این سرویس ها هم اختلالی ایجاد بشه و همین موضوع باعث کندی ارتباط شما بشه.
سلام ببخشید راهی هست که این سورس کد ها رو بشه برگردوند؟اگر اره لطفا بگید
سلام؛ بله همونطور که داخل مقاله اشاره شد ابزارهایی برای انجام عمل معکوس مبهم سازی (Deobfuscation) وجود دارد. بسته به شدت مبهم سازی و تکنیک هایی که برای این منظور استفاده شده ممکنه این عمل دشوارتر بشه. با جستجو در اینترنت می تونید نمونه های مختلف بسته به زبان موردنظرتون پیدا کنید.
سلام .
این قسمت که نوشته شده منظور چه مبحثی از شبکه مد نظر بوده ؟؟؟
با سلام
منظور از این قسمت استفاده از روش هایی مثل رمزنگاری ارتباط هست که در واقع به نوعی ارتباط شما رو مبهم یا غیرقابل رصد می کنه و معمولا در شبکه های خصوصی مجازی (Virtual Private Network) نمونه ای از اون دیده میشه.