برنامه نويسان با به کار گیری زبان های برنامه نویسی میتوانند دستورات برنامه خود را طراحی کنند. زبان های برنامه نویسی به طور کلی به سه قسمت تقسيم بندی می شوند:
کامپیوترها فقط یک زبان را تشخیص می دهد و آن هم زبان ماشین است در نتیجه تمامی برنامه های نوشته شده ب زبان سطح بالا،می بایست برای اجرا شدن به زبان ماشین تبدیل شوند. دستورات برنامه ابتدا در یک فایل متنی به نام Source code نوشته می شوند سپس توسط Compiler به زبان ماشین ترجمه می شوند.
حاصل این ترجمه یک فایل اجرایی (.exe) است که روی یک Platform مناسب اجرا می شود. در زبان هایی مثل C و VB، دستورات برنامه مستقیما به زبان ماشین تبدیل می شوند اما در زبان های .NET- based و Java، دستورات هنگام کامپایل شدن ابتدا به کد میانی (Intermediate code) که واسط بین زبان برنامه نویسی و Platform است، تبدیل می شوند و سپس کد ماشین (Binary code) از روی آن تولید می شود.
حال یک Cracker می تواند بدون داشتن سورس کد به کدهای برنامه دسترسی پیدا کرده و آنها را تغییر دهد، یعنی با استفاده از یک فایل .exe (Binary code) یا کد میانی (Intermediate Code) به Source Code برسد. به این عمل Reverse Engineering یا مهندسی معکوس می گویند (مبحث مهندسی معکوس در مورد Intermediate Code نسبت به Binary code کاملاً متفاوت بوده و در مقایسه با آن ساده تر میباشد).
سه تکنیک اصلی در مهندسی معکوس عبارت اند از:
برای ایمن سازی کد برنامه و مقابله با مهندسی معکوس استراتژی های مختلفی وجود دارد. آسان ترین و ارزان ترین راه Code Obfuscation (ایجاد ابهام) است، در این متد سورس برنامه یا کد میانی به گونه ای تغییر می کند که decompile کردن آن بسیار دشوار شود (بدون اینکه عملکرد برنامه تغییر کند). فرایند Obfuscation توسط ابزاری به نام obfuscator صورت می گیرد.
برای مبهم سازی سورس کد روش های مختلفی وجود دارد که در زیر به تعدادی از آنها اشاره می کنیم.
1.Name obfuscation یا Layout obfuscation: در این حالت فرمت سورس برنامه تغییر می کند، یعنی Identifier های برنامه مثل نام توابع، کلاس ها و متغیرهای برنامه را به گونه ای تغییر می دهیم که مبهم باشند و یا بعد از decompile کد بی معنی تولید شود به عنوان مثال استفاده از Property.
2.Data obfuscation: در این روش ساختار داده های تعریف شده در برنامه تغییر داده می شود که انواع مختلف آن عبارت اند از:
3.Code flow obfuscation یا Control obfuscation: در این مدل روند کنترل برنامه (control flow) تغییر داده می شود که انواع مختلف آن عبارت اند از:
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات
محمد نصیری هستم ، بنیانگذار انجمن تخصصی فناوری اطلاعات ایران و مجموعه توسینسو ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 80 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر و ناظر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود