سلام دوستان!
امروز می خواهیم درباره یک موضوع جالب در دنیای برنامه نویسی صحبت کنیم: "آشکار سازی کد" یا به انگلیسی "Deobfuscation". شاید این کلمه کمی پیچیده به نظر برسد، اما نگران نباشید. سعی می کنم به زبان ساده توضیح بدهم.
قبل از اینکه به سراغ Deobfuscation برویم، باید بدانیم Obfuscation چیست. Obfuscation یعنی پنهان کردن یا مبهم کردن کد. برنامه نویس ها گاهی اوقات کدهایشان را مبهم می کنند تا:
روش های مختلفی برای Obfuscation وجود دارد. مثلاً:
یک مثال خیلی ساده:
فرض کنید یک کد ساده داریم:
int sum(int a, int b) {
return a + b;
}
بعد از Obfuscation ممکن است این کد به این شکل در بیاید:
int aaaa(int bbbb, int cccc) {
int dddd = bbbb + cccc;
int eeee = dddd;
return eeee;
}
می بینید که خواندن و فهمیدن کد خیلی سخت تر شده است. اسم متغیرها و توابع عوض شده و یک خط کد اضافی هم اضافه شده است.
Deobfuscation دقیقاً برعکس Obfuscation است. یعنی تلاش برای آشکار کردن و فهمیدن کدی که مبهم شده است. هدف این است که بفهمیم کد اصلی چه کار می کند.
Deobfuscation می تواند خیلی سخت باشد، به خصوص اگر کد با روش های پیچیده ای مبهم شده باشد. گاهی اوقات حتی نیاز است که کد را خط به خط بررسی کنیم و سعی کنیم منطق آن را بفهمیم.
Deobfuscation دلایل زیادی برای اهمیت دارد:
روش های مختلفی برای Deobfuscation وجود دارد:
فرض کنید کد زیر را داریم که با جاوا اسکریپت نوشته شده و مبهم شده است:
eval(function(p,a,c,k,e,r){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){r[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('0.1("2 3!")',4,4,'console|log|Hello|World'.split('|'),0,{}))
این کد به نظر خیلی پیچیده می آید، اما با استفاده از یک ابزار Deobfuscation (مانند JSDetox یا unminify.com) می توانیم آن را به کد زیر تبدیل کنیم:
console.log("Hello World!")
می بینید که کد اصلی خیلی ساده تر است!
ویژگی | Obfuscation (مبهم سازی) | Deobfuscation (آشکار سازی) |
---|---|---|
هدف | پنهان کردن کد و سخت کردن فهم آن | آشکار کردن کد و فهمیدن آن |
کاربرد | جلوگیری از دزدی کد، محافظت از نرم افزار | تحلیل کد، رفع باگ، امنیت |
روش ها | تغییر نام متغیرها، اضافه کردن کد بی فایده | تحلیل استاتیک، تحلیل دینامیک، ابزارهای Deobfuscation |
Obfuscation و Deobfuscation دو روی یک سکه هستند. Obfuscation برای پنهان کردن کد استفاده می شود و Deobfuscation برای آشکار کردن آن. Deobfuscation می تواند در زمینه های مختلفی مانند امنیت، تحلیل کد و رفع باگ مفید باشد.
امیدوارم این توضیحات برای شما مفید بوده باشد. اگر سوالی دارید، خوشحال می شوم پاسخ بدهم.
موفق باشید! و مواظب املای کلمات باشییید!
Obfuscation, Deobfuscation, امنیت, برنامه نویسی, کد, مهندسی معکوس, تحلیل کد
امتیاز شما به این مطلب
امتیاز: 5 از 5 (مجموع 1 رای)
اولین نفری باشید که در مورد این مقاله نظر می دهید!
techfeed.ir© 2024 All rights reserved