[B]Reverse Engineering[/B][B] یا مهندسی معکوس چیست؟[/B]
معنای Reverse Engineering به فارسی مهندسی معکوس هست و همانطور که از معنای آن مشخص هست ، این علم طرف مقابل مهندسی نرم افزار می باشد. در واقع مهندسی نرم افزار و مهندسی معکوس دو روی یک سکه هستند. برای درک بهتر این مطلب، موضوع ر بازتر می کنیم:
فرض کنیم که نتیجه نهایی کار یک برنامه نویس (یا همان مهندس نرم افزار) یک فایل
exe هست که با اجرای آن یک سری محاسبات انجام می شود. به عنوان مثال این برنامه عددی را از شما می گیرد و با انجام محاسباتی، تغییراتی بر روی آن عدد اعمال می کند و نتیجه را به شما نشان می دهد. تمامی این کارها در پشت پرده انجام می شود و شما فقط عددی را به برنامه می دهید و بلافاصله نتیجه ای می بینید. ولی نحوه رسیدن به این نتیجه را نمی بینید. حال شما می خواهید با طریقه انجام محاسبات و نحوه رسیدن به نتیجه آشنا شوید. اولین راه برای آشنایی با نحوه انجام محاسبات این برنامه داشتن Source Code[برای نمایش لینک باید عضو شوید. ] آن است. اما در خیلی از موارد شما سورس کد برنامه ها را در اختیار ندارید. تنها چیزی که برای شما موجود هست همان فایل exe و بقیه فایل های جانبی مربوط به برنامه می باشد. شاید در اولین نگاه فکر کنیم که آشنایی با نحوه انجام محاسبات یک برنامه بدون داشتن سورس کد آن غیر ممکن باشد. ولی با استفاده از علم Reverse Engineering این کار غیر ممکن نیست و ما می توانیم بدون داشتن سورس کد برنامه و یا اطلاعات دقیقی در رابطه با طراحی آن به مراحل طراحی و کد نویسی برنامه پی ببریم و با طریقه انجام محاسبات آن آشنا شویم. تعریف زیر یک تعریف ابتدایی از Reverse Engineering هست. وقتی به بخش رابطه بین Reverse Engineering و Assembly برسیم مفهوم دقیق تری از مهندسی معکوس بیان می کنیم : Reverse Engineering علمی است که توسط آن می توان بدون داشتن سورس کد یک برنامه به نحوه انجام محاسبات آن برنامه پی برد.