مهندسی معکوس نرم افزار

مهندسی معکوس به روشی گفته می شود که با استفاده از جواب، باید سوال اصلی را پیدا کرد. این روش بیشتر زمانی کاربرد دارد که شما به دنبال استخراج دانش، کالا، روش های طراحی و… باشید. در بیشتر مواقع یک شرکت، محصولی از شرکت رقیب خود را تحلیل کرده تا بداند با چه روش و ایده ای به اینجا رسیده است. می توان از مهندسی معکوس در تمامی رشته ها و حتی اثرهای هنری استفاده کرد. این روش در حوزه نرم افزار نیز بسیار پرکاربرد است و ما قصد داریم در این مطلب اطلاعات مفیدی را در خصوص چگونگی مهندسی معکوس نرم افزار به شما ارائه دهیم و به طور کلی بگوییم که مهندسی معکوس نرم افزار چیست؟ همراه دو کرک باشید!


♦ برای انجام انواع خدمات مهندسی معکوس نرم افزار با استفاده از روش های زیر با ما ارتباط بگیرید ♦

⇐ تلگرام: t.me/DoCrackMe

⇐ تلفن تماس: 09368059613


منظور از مهندسی معکوس در نرم افزار چیست؟

مهندسی معکوس یا Reverse Engineering یکی از واژه هایی است که در دهه های اخیر بسیار آن را شنیده ایم و بسیاری از شرکت ها از آن استفاده می کنند. chikofsky یکی از اصلی ترین پیشگامان مهندسی معکوس در دنیا به حساب آمده و در مقاله ای این عمل را این گونه شرح داده است که “مهندسی معکوس مراحل و پروسه آنالیز از موضوعی سیستمی است که امکان نمایش و ساخت آن سیستم را در سطوح بالاتری فراهم می آورد. به عبارت دیگر طی کردن یک مسیر به صورت معکوس در چرخه تولید یک نرم افزار است.”

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

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

در تعریف دقیق تر مهندسی معکوس در نرم افزار باید بگوییم که فرایند تجزیه و تحلیل یک سیستم یا برنامه نرم افزاری، هدف استخراج اطلاعات و طراحی و پیاده سازی مجدد آن است. علاوه بر این ها از مهارت های مهندسی نرم افزار برای تشخیص دادن و خنثی کردن ویروس ها و بد افزارها، خطایابی نرم افزار و بررسی امنیت نرم افزار استفاده می شود.

مهندسی معکوس نرم افزار چیست؟

 

تاریخچه مهندسی معکوس نرم افزار

در سال 1980 میلادی شرکت کامپیوتری IBM، با معرفی کامپیوترهای شخصی برای کاربران خانگی و سازمان های مختلف، توانست برای مدت طولانی بازار را در دست بگیرد و تا چندین سال به عنوان حاکم بلافصل بازار کامپیوترهای شخصی از آن نام می بردند. رمز تمامی این طراحی ها در بخش Bios این کامپیوتر ها بود، که به عنوان رابط بین نرم افزاری و سخت افزاری سیستم به حساب می آمد.

در همان دوره شرکت Compaq که بزرگ ترین شرکت تولید کننده کامپیوترهای شخصی در آمریکا بود، در آن زمان بیش از 1000000 دلار برای مهندسی معکوس بر روی کامپیوترهای ساخته شده توسط IBM هزینه کرد. با این کار شرکت Compaq موفق شد با یک شبیه سازی درست اولین کامپیوترهای شخصی را وارد بازار کند که با کامپیوتر های IBM سازگاری داشت. در همان ابتدا کامپیوترهای تولید شده طرفداران بسیاری پیدا کردند و در آن زمان بیش از 53000 عدد فروش داشتند.

حتما بخوانید:  تفاوت بدافزار، ویروس، تروجان، کرم کامپیوتری و باج افزار چیست؟

مهندسی معکوس در تولید نرم افزار

این قوی ترین مثال برای افرادی به حساب می آید که می خواهند بدانند مهندسی معکوس نرم افزار چیست. شما با استفاده از علم مهندسی معکوس نرم افزار می توانید به نرم افزارها و طراحی های پیشرفته تری دست پیدا کنید و تولید کامپیوتر های شخصی از کمپانی Compaq بهترین مثال است.

به طور کلی مهندسی معکوس شامل موارد زیر می شود:

1- آنالیز برنامه هدف

2- بررسی سطح میانی، تجزیه و تحلیل و تشریح کامل سطح میانی

3- آنالیز کدهای استفاده شده و بررسی تمامی جزئیات آن

4- ساخت محصولی جدید و کاربردی با استفاده از تجزیه و تحلیلی که در مراحل قبلی انجام داده اید.

دلایل استفاده از مهندسی معکوس در نرم افزار

امروزه دلایل بسیار زیادی برای استفاده از مهندسی معکوس وجود دارد و ما در این بخش می خواهیم بیان کنیم که مهمترین دلایل استفاده از مهندسی معکوس نرم افزار چیست؟

– بعضی از اوقات اسناد و مدارک ضعیفی در مورد عملکرد سیستم نرم افزاری مورد نظر در دسترس قرار دارد یا کلا هیچ منبعی برای دسترسی وجود نخواهد داشت، اما کد منبع برای نرم افزار در دسترس است. در این حالت با استفاده از مهندسی معکوس در نرم افزار می توان به آنالیز و بررسی سیستم پرداخت، این به عنوان مهندسی مجدد به حساب می آید.

– در برخی اوقات هیچ Source code از نرم افزار در دسترس نیست و هر تلاشی که برای به دست آوردن و تشخیص source code، همان مهندسی معکوس به حساب می آید.

– تست سیاه یکی از رایج ترین نوع مهندسی معکوس محسوب می شود. در این شرایط تست API در اختیار شما بوده و می توانید بعد خارجی نرم افزار را بررسی و تحلیل کنید.

– همچنین می توان با استفاده از مهندسی معکوس ویژگی های خوب یک برنامه را تقویت کرده تا کاربران بتوانند در مدت زمان طولانی از آن استفاده نمایند.

– آنالیز، نوسازی و نگهداری محصولات و برنامه ها

– رفع محدودیت های اعمال شده بر روی نرم افزار با استفاده از ثبت سفارش کرک نرم افزار از متخصصان مهندسی

– برنامه نویس می تواند به جای شروع برنامه نویسی و ساخت برنامه ای از نقطه صفر، یک سیستم یا برنامه موفق را تحلیل و آنالیز کرده و می تواند تکه هایی از برنامه را باز تولید کند.

– در آخر اگر از ما بپرسید که بدترین کاربرد مهندسی معکوس نرم افزار چیست؟ می توانیم به شکستن کدهای امنیتی نرم افزار یا از بین بردن حقوق کپی رایت نرم افزار اشاره کنیم.

مهندسی معکوس در مهندسی نرم افزار

بیشترین استفاده از مهندسی معکوس نرم افزار چیست؟

مهندسی معکوس بیشتر در مواردی همچون مهندسی مجدد و تشخیص Source Code کاربرد دارد. سورس کد در واقع فرایند بازخوانی کدهای برنامه، بخشی از برنامه یا زیر مجموعه سیستم نرم افزاری است، بدون اینکه از هیچ طرح ها، اسناد و مدل های کامپیوتری کمک بگیرید.

مهندسی معکوس نرم افزار چیست

مهندسی معکوس نرم افزار دودویی چیست؟

طراحی و تحلیل سیستم در مهندسی نرم افزار گاهی با عنوان مهندسی کد معکوس یا Reverse Code Engineering خوانده می شود. برای مثال Decompile یکی از برنامه های نرم افزار دودویی است که تحت پلتفرم جاوا نوشته شده و می توان آن را با عنوان Jad انجام داد. این مورد یکی از مشهورترین مهندسی معکوس نرم افزار در تاریخچه مهندسی معکوس بوده که در آن شرکت Compaq موفق شد تا کامپیوترهای سازگار با IBM را بسازد، که در بخش های قبلی نیز در مورد آن صحبت کردیم.

حتما بخوانید:  قفل سخت افزاری و دانگل چیست؟ + انواع قفل سخت افزاری

امروزه تعداد بسیار زیادی از افراد از در عرصه مهندسی معکوس نرم افزار فعالیت دارند و این را به عنوان یک تفریح در نظر می گیرند، برخی از آن ها نیز عمل کرک نرم افزارهای مختلف را انجام می دهند. به عنوان معروف ترین این گروه ها می توان به CORE و Challenge Of Reverse Engineering اشاره کرد.

برخی از پروژه ها وجود دارد که مهندسی معکوس نرم افزار در ایجاد آن نقش بسیار بسزایی دارند که عبارتند از Somba Software یا Wine که در آن Windows API به صورت معکوس مهندسی و MS Office در آن به راحتی اجرا می شود.

مهندسی معکوس نرم افزار

تکنیک و روش های مهندسی معکوس نرم افزار

در بخش های قبلی به خوبی شرح دادیم که مهندسی معکوس نرم افزار چیست و اکنون باید روش ها و متد های مختلفی را برای انجام مهندسی معکوس نام ببریم که عبارتند از:

– آنالیز اطلاعات و مشاهدات

– تبادل اطلاعات

– استفاده از اشکال زدا ها یا Debuggers

در برنامه های تحت ویندوز معمولا از برنامه های سطح پایین مثل Numega SoftICE استفاده می شود. در ادامه چند برنامه مهندسی معکوس نرم افزار را برای شما نام می بریم و شرح می دهیم که نرم افزار های مورد نیاز برای مهندسی معکوس نرم افزار چیست.

اشکال زدا ها یا Debuggers

این برنامه های نرم افزاری می توانند کد برنامه های دیگر را خط به خط اجرا کرده و خطاهایی که در نرم افزار وجود دارند پیدا و سپس آن ها را ردیاب می کنند. کارکرد این برنامه ها به گونه ای است که در ابتدا یک وقفه را در برنامه ایجاد خواهند کرد و سپس تمامی خطوط و خطاها را ردیابی می نمایند. زمانیکه برنامه اشکال زدا به این نقطه برسد متوقف شده و بدین ترتیب کاربر می تواند مقدار و ارزش تمامی متغیرات ها را در هنگام اجرا ببیند.

اشکال زدا ها به دو دسته مد هسته یا kernel و مد کاربر یا User تقسیم می شوند. شما می توانید در هسته بخش سیستم عامل، برنامه های راه انداز سیستم مهندسی را معکوس کنید.

مهندسی معکوس در مهندسی نرم افزار

استفاده از دی اسمبل یا Disassembler

یکی از رایج ترین روش ها برای مهندسی معکوس نرم افزار، استفاده از برنامه های Disassembler است. دی اسمبل ها برای نخستین بار توسط کرکر ها یا رخنه های نرم افزاری نوشته شدند. هدف اصلی کرکر ها تبدیل ساختار کد ماشین به کد اسمبلی (زبان سطح بالاتر) و ترجمه کد ها بود که در این شرایط شما میلیون ها خط کد اسمبلی را مشاهده می کنید که در بیشتر مواقع برای شما قابل فهم نیست.

این مراحل کاملا عکس عمل اسمبلر بوده و به عبارتی نوعی مهندسی معکوس محسوب می شود. امروزه دی اسمبلرهای متفاوتی به نام های freeware یا shareware وجود دارد، اما یکی از بهترین و بزرگ ترین دی اسمبلرها حال حاضر IDA Pro بوده که هیچ دی اسمبلری را نمی توان با آن از لحاظ امکانات و ویژگی مقایسه کرد. این برنامه بسیار ماهرانه طراحی شده، به گونه ای که با استفاده از API ها و پایگاه داده برنامه، می تواند امکان تحلیل سفارشی را برای کاربر محیا می کند.

مهندسی معکوس در تولید نرم افزار

استفاده از Decompiler

این نوع برنامه ها عملی معکوس با کامپلیرها را داشته و عملیات را برعکس آن ها انجام می دهند. Decompiler کد اسمبلی میانی یا همان کد ماشین را به کد های سطح بالا تبدیل می کند. هدف این برنامه ها ایجاد فایل هایی است که توسط کامپیوتر قابل خواندن بوده و در مراحل بعدی این فایل ها به زبان قابل فهمی برای انسان تبدیل می شوند.

حتما بخوانید:  معرفی انواع باج افزار ها و آشنایی با تاریخچه باج افزار ها

روش های جلوگیری از مهندسی معکوس نرم افزار چیست؟

باید بدانید که هیچ راهکار تضمین شده و مطمئنی برای جلوگیری از مهندسی معکوس نرم افزار وجود ندارد. شعار همیشگی کرکر های ماهر و گروه های بسیار بزرگ، این است که “هیچ سیستم نرم افزاری غیرقابل کرک کردنی وجود ندارد یا Nothing is uncrackable”.

ما در این بخش تنها برای آشنایی شما، چند روش را ذکر می کنیم که استفاده از آن ها پروسه مهندسی معکوس نرم افزار را مقداری به تاخیر می اندازد یا اینکه فهم آن را برای کرکر های تازه کار کمی مشکل تر می کند. این روش ها عبارتند از:

1- عدم استفاده از اسم های رایج و همه گیر برای توابع یا متدهای حفاظتی و امنیتی برای برنامه خود مانند (IsValidSerialNumber)

2- عدم استفاده از مسیج باکس ها با متن های تکراری مانند “thanks for registration” و مثال های این چنینی

3- شما می توانید با استفاده از Cryptor ها و packer های مشهور مانند ShareLock، CrypKey و FLEXlm، پروسه مهندسی معکوس نرم افزار خود را کمی پیچیده تر کنید. بهتر است بدانید که تمامی نرم افزارهای نام برده شده قبلا توسط کرکر ها و گروه های قوی، هک شده اند، اما با این حال این روش ها برای جلوگیری از نفوذ کرکر های تازه کار می تواند موثر باشند.

4- Encryption های خاص را برای برنامه های خود به کار ببرید. برای مثال حتما از XOR استفاده کنید؛ چراکه هر XOR می تواند 10 تا 15 دقیقه پروسه مهندسی معکوس نرم افزار را عقب بیندازد. استفاده از ECC/SHA/RSA می تواند ساعت ها در این فرایند اختلال ایجاد کند.

5- می توانید الگوریتم هاص خاصی را همچون CRC check برای چک کردن امنیت نرم افزار خود استفاده کنید تا اطمینان حاصل نمایید که برنامه شما دستکاری نشده است.

6- حتما از paker های جدید استفاده کنید تا بعد از unpack کردن دستی، کدها دچار مشکل نشود.

مهندسی معکوس نرم افزار یعنی چه

جمع بندی

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


♦ برای انجام انواع خدمات مهندسی معکوس نرم افزار با استفاده از روش های زیر با ما ارتباط بگیرید ♦

⇐ تلگرام: t.me/DoCrackMe

⇐ تلفن تماس: 09368059613


برخی از سوالات متداول

فرایند مهندسی معکوس نرم افزار شامل چه مواردی می شود؟

1- آنالیز برنامه هدف 2- بررسی سطح میانی، تجزیه و تحلیل و تشریح کامل سطح میانی 3- آنالیز کدهای استفاده شده و بررسی تمامی جزئیات آن 4- ساخت محصولی جدید و کاربردی با استفاده از تجزیه و تحلیلی که در مراحل قبلی انجام داده اید.

کاربرد های استفاده از مهندسی معکوس نرم افزار چیست؟

مهندسی معکوس می تواند شما را با استفاده از نتیجه یک مسئله به اصل مسئله و نحوه شکل گیری آن برساند. در واقع شما می توانید با استفاده از علم مهندسی معکوس نرم افزار محوه شکل گیری و فرایند ساخت یک شئی، دستگاه یا سیستم را به دست بیاورید.

دیدگاه شما

نشانی ایمیل شما منتشر نخواهد شد.