Reverse Code Engineering

逆向工程代码 обратная код машиностроения

Reverse Code Engineering

逆向工程代码 обратная код машиностроения

Reverse Code Engineering

Share what I know............... learn what I don’t

آخرین نظرات

مبهم سازی (قسمت اول)

پنجشنبه, ۱۸ شهریور ۱۳۹۵، ۱۱:۰۸ ب.ظ

توی مبحث توسعه نرم افزار, مبهم سازی (obfuscation) یک عمل عمدی برای ساخت کدهای مبهم شده است. یعنی سورس کد یا کد ماشینی تولید کنیم که فهمیدن آن برای انسان مشکل باشد. به ابزاری که این عمل رو برای ما انجام میدهد obfuscator  می گویند.بعنوان مثال Obfuscator سورس کد, سورس کد برنامه رو دریافت می کند و سورس کد دیگری با همان عملکرد که درک آن سخت تر است را تولید می کند.

 

مبهم سازی زمانی صورت میگیرد که برنامه نویس نخواهد هدف یا منطق برنامه قابل رویت باشد, جلوگیری از tampering , دلسرد کردن کردن reverser و چیزای دیگه که همگی به خود برنامه نویس مربوط می شود.

البته معماری و خصوصیات یک زبان هم می تواند به مبهم سازی آن کمک کند از جمله زبان های برنامه نویسی مثل C, C++, Perl و...زبانهای راحتی برای مبهم سازی هستند.

 

مبهم سازی می تواند شامل تعویض کلمات کلیدی ساده, استفاده کردن یا نکردن از فضای خالی, برداشتن توضیحات, از بین بردن تورفتگی ها, تغییر نام ثابت ها و شناسه ها (مثل مغییرها, توابع و ...) در سورس فایل و ... باشد.

 

مثال زیر به زبان جاوا اسکریپت است:


و حالا اگر این کد مبهم شود:



این دو کد کار یکسانی رو انجام می دهند با این تفاوت که درک کد دوم کار سختی است.

 

یا مثال معروف شعرهای 12 روز کریسمس که به به زبان سی هستش :



و یا این:

نمونه های بیشتر کدهای مبهم شده زبان سی رو می تونید از سایت ioccc.org دریافت کنید.

 

منافع مبهم سازی:

برای بسترهایی مثل جاوا , اندورید . دات نت یه سری ابزار به نام دیکامپایلر وجود دارد که می توان با این ابزارها به سورس کد فایل اجرایی یا کتابخانه رسید. که reverser بسته به نیاز خود اطلاعات را از این سورس کد استخراج می کند (لایسنس, عملکرد یه تابع و...). حال یکی از روشهای محافظت از سورس کد شاید همین مبهم سازها باشند.


مضرات مبهم سازی:

درست است که مبهم سازی می تواند خواندن و نوشتن و مهندسی معکوس را سخت و زمانبر کند اما لزوما اینکار مهم نیست, برخی آنتی ویروس ها زمانی که با سایت هایی که از کدهای مبهم شده استفاده کرده اند, مواجه می شوند هشدار می دهند زیرا یکی از اهداف مبهم سازی می تواند مخفی سازی کد های مخرب باشد.

برخی از کاربرها نمی توانند از هشدارهای آنتی ویروس چشم پوشی کنند مخصوصا اگر سایت شرکت مورد اعتمادشان باشد.و بعضی از شرکت ها هم نمی توانند این اعتماد را با استفاده از مبهم سازی زیر سوال ببرند.


انواع مبهم سازها:

خوب توی کشور ما بیشترین مورد استفاده از مبهم سازی برای زبانهای .NET هستش.

در زیر لیست مبهم سازهای مهم رو مشاهده می کنید.تفاوت مبهم سازها در تفاوت متدهای محافظتی اونها هستش, هرچند که ویژگی های مشترکی هم بین اونها وجود داره.


نظرات (۲)

با عرض سلام و خسته نباشید بنده از مطالب وبلاگتون خیلی استفاده کردم  ازتون ممنونم
بنده دانشجوی رشته رمز هستم و در حال تهیه پروپوزال
عنوان پروژه بنده ارایه روشی بهبودیافته برای مبهم سازی کدهای سی و دات نت و پیاده سازی آن میباشد و اهدافش

-         آشنایی با مهندسی معکوس

-         آشنایی با روش ایمنسازی کد برنامه

-         آشنایی با Obfuscation  

پیاده­سازی یک روش بهبودیافته برای مبهم سازی کدهای سی و دات نت
میباشد
میخواستم اگه امکانش هست به بنده کمک کنید که چطور استارت بزنم ازتون ممنونم.
پاسخ:
سلام
ایمیلتون رو چک کنید
با عرض سلام و خسته نباشید خدمت شما
مرسی از مطالب خوبی که در سایت میگذارید
یک درخواست داشتم
پروژه پایانی بنده در مورد مبهم سازی کدها و همینطور شفاف سازی کدهای مبهم است
اگر میشه لطف کنید مطالبی رو در اختیار من قرار بدید در این پیرامون این موضوع.
ممنونم
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی