1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

مهندسی معکوس

شروع موضوع توسط Mr Perfect ‏6/8/15 در انجمن سایر رشته ها

  1. کاربر فوق حرفه ای

    تاریخ عضویت:
    ‏23/6/15
    ارسال ها:
    4,491
    تشکر شده:
    6,069
    امتیاز دستاورد:
    113
    جنسیت:
    مرد
    حرفه:
    Engineering Management
    مهندسی معکوس (به انگلیسی: Reverse Engineering) به علمی گفته می‌شود که از پاسخ به سوال می‌رسند و در واقع فرایند کشف اصول تکنولوژیکی یک دستگاه، شیئ یا یک سیستم می‌باشد که از طریق تجزیه و تحلیل ساختار و عملکرد آن حاصل می‌شود. در اکثر مواقع موضوع مورد بررسی یک دستگاه مکانیکی، الکتریکی، برنامه نرم‌افزاری یا یک ماده بیولوژیکی یا شیمیایی می‌باشد که بدون داشتن دانش قبلی و تنها با جداسازی اجزا و تجزیه و تحلیل شیوه عملکرد آن، سعی در ایجاد یک نمونه جدید از آن می‌گردد. مهندسی معکوس به طور عمده در استفاده‌های تجاری و نظامی به کار می‌رود و هدف آن استنباط پارامترهای طراحی یک محصول موجود بدون داشتن دانش کافی در زمینه تولید آن محصول و فقط با پیمودن فرایند معکوس و به کارگیری تکنیک‌های مشابه می‌باشد.

    محتویات
    • ۱ دلایل استفاده از مهندسی معکوس
    • ۲ مهندسی معکوس در حوزه نرم‌افزار
      • ۲.۱ مهندسی معکوس کد (سورس کد)
        • ۲.۱.۱ تکنیک‌های مهندسی معکوس نرم‌افزار
    • ۳ طراحی اتاق پاک
    • ۴ مهندسی معکوس در سه‌بعدی سازی
    • ۵ مهندسی معکوس طراحی به کمک عکس
    • ۶ منابع
    دلایل استفاده از مهندسی معکوس
    • نوسازی نرم‌افزار: مهندسی معکوس به صورت کلی برای درک وضعیت موجود برنامه مورد نیاز است. این عمل به منظور برآورد درست کوشش‌های مورد نیاز برای مهاجرت اطلاعات سیستم به یک وضعیت دلخواه است.
    • نگهداری نرم‌افزار: مهندسی معکوس نرم‌افزار می‌تواند مستندات لازم را برای درک وضعیت فعلی نرم‌افزار سیستم فراهم کند.
    • آنالیز محصول: برای بررسی اینکه یک محصول چه گونه کار می‌کند، از چه اجزایی تشکیل شده، برآورد هزینه‌ها و مشخص کردن حقوق مالکیت بالقوه.
    • بازبینی امنیتی
    • بدست آوردن اطلاعات حساس به کمک دیس اسمبل و تجزیه و تحلیل طراحی اجزای سیستم
    • حذف محافظ کپی، دور زدن محدودیت‌های دسترسی.
    • ایجاد کپی‌های بدون مجوز / تایید نشده.
    • اهداف علمی / آموزشی.
    مهندسی معکوس در حوزه نرم‌افزار
    در عمل دو نوع عمده از مهندسی معکوس وجود دارد. در حالت اول، سورس کد برای برنامه وجود دارد، اما سطوح بالاتری از جنبه‌های این برنامه، شاید مستندات ضعیف یا مستنداتی که دیگر اعتبار ندارد، مشاهده می‌شوند. در حالت دوم، سورس کدی برای برنامه موجود نیست و هرگونه تلاشی در جهت استخراج یک سورس کد ممکن برای نرم‌افزار به عنوان مهندسی معکوس در نظر گرفته شده است. بسیاری از مردم با استفاده دوم از این اصطلاح آشنا هستند. مهندسی معکوس نرم‌افزار برای جلوگیری از نقض کپی رایت می‌تواند از تکنیک طراحی اتاق پاک استفاده کند.

    مهندسی معکوس کد (سورس کد)
    این فرایند برخی مواقع مهندسی معکوس کد یا(Reverse Code Engineering) نامیده می‌شود. به عنوان یک مثال، دیکامپایل کردن باینری برای پلتفرم جاوا از طریق برنامه JAD می‌تواند انجام شود. یک مثال از گروهی که مهندسی معکوس نرم‌افزار را برای لذت بردن (و انتشار کدهای ثبت) انجام می‌دهند CORE هست که مخفف «چالش مهندسی معکوس» است. مهندسی معکوس نرم‌افزار در قانون کپی رایت ایالات متحده در صورت استفاده منصفانه محافظت می‌شود. برنامه Samba که به سیستم‌های غیر مایکروسافت ویندوز اجازه می‌دهد به اشتراک فایل با سیستم‌های ویندوزی بپردازند یک مثال کلاسیک از مهندسی معکوس نرم‌افزار هست. به این خاطر پروژه Samba باید به مهندسی معکوس اطلاعات منتشر نشده در مورد چگونگی به اشتراک گذاری فایل ویندوز می‌پرداخت، تا که کامپیوترهای غیر ویندوزی بتوانند آنرا شبیه‌سازی کنند. پروژه Wine همین کار را برای API ویندوز و OpenOffice.org این کار را برای فرمت فایل‌های مایکروسافت آفیس انجام می‌دهد.

    تکنیک‌های مهندسی معکوس نرم‌افزار
    مهندسی معکوس نرم‌افزار از روش‌های گوناگونی می‌تواند بدست آید. سه گروه اصلی مهندسی معکوس نرم‌افزار عبارتند از:

    ۱-تجزیه و تحلیل از طریق مشاهده تبادل اطلاعات - شایع ترین در مهندسی معکوس پروتکل- که شامل استفاده از آنالیزورهای درگاه باس و اطلاعات انتقالی شبکه است. الگوی رفتاری درگاه باس یا شبکه بعدا می‌تواند مورد تجزیه و تحلیل قرار گیرد. به منظور تولید یک اجرای مستقل که آن رفتار را تقلید می‌کند. این امر به ویژه برای مهندسی معکوس درایورهای دستگاه مفید است. برخی مواقع مهندسی معکوس بر روی سیستم‌های بسته به وسیله ابزارهایی که عمدا توسط تولید کننده معرفی شده بسیار کمک کننده است. در مایکروسافت ویندوز دیباگر سطح پایین مانند SoftICE طرفداران بسیاری دارند.

    ۲-تولید فایل اسمبل برنامه به وسیله دیس اسمبلر: به معنی خواندن کدهای خام زبان ماشین و درک این اطلاعات با اصطلاحات خواص دیس اسمبلر. این عمل بر روی تمام برنامه‌های کامپیوتری می‌تواند اعمال شود اما درک آن ممکن است مدتی زمان بر باشد، مخصوصا برای کسانی که با زبان ماشین آشنا نیستند.

    ۳-دستیابی به سورس کد با استفاده از یک دیکامپایل کننده، فرایندی که تلاش می‌کند سورس کد را در بعضی زبان‌های سطح بالا برای برنامه‌ای که فقط در حالت بایت کد یا کدهای ماشین است فراهم کند.

    طراحی اتاق پاک
    طراحی اتاق پاک (همچنین به عنوان روش دیوار چینی شناخته می‌شود) روش کپی کردن یک طراحی به کمک مهندسی معکوس و سپس بازآفرینی آن بدون نقض کپی رایت و اسرار تجاری در ارتباط با طرح اصلی است. طراحی اتاق پاک به عنوان دفاع در برابر نقض قوانین کپی رایت و اسرار تجاری مفید است به این دلیل که به اختراع مستقل متکی است.

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

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

    مهندسی معکوس در سه‌بعدی سازی
    مهندسی معکوس سه‌بعدی سازی، هنر تبدیل ابر نقاط به مدل سه‌بعدی CAD میباشد. ابر نقاط مجموعه سه‌بعدی از نقاط است که خصوصیات سطح خارجی یک شیئ را توصیف میکنند. این نقاط از آنالیز محیط پیرامون شیئ و جمعآوری اطلاعات از شکل ظاهری آن به کمک یک اسکنر سهبعدی به دست میآیند. تکنولوژی به کار رفته در جمع‌آوری اطلاعات از سطح شکل، در دو نوع تماسی و بدون تماس میباشد. در حالت تماسی از دستگاههای (CMM (Coordinate Measuring Machine و در حالت بدون تماس از لیزر و نور ساخت یافته استفاده میشود.

    [​IMG]

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

    محیط کاری (Digitized Shape Editor (DSE در آغاز چرخه مهندسی معکوس CATIA قرار دارد. این محیط به عنوان یک ابزار قدرتمند برای خواندن، وارد کردن، اعمال فرایندهای مختلف بر روی ابر نقاط و تولید مش مورد استفاده قرار میگیرد. خروجی این محیط میتواند در محیطهای Quick Surface Reconstruction، Digital Mock-Up و یا Surface Machining به کار رود و یا به صورت فرمتهای مختلف تبدیل شود.

    [​IMG]

    محیط کاری (Quick Surface Reconstruction (QSR برای بازسازی سریع و آسان سطوح از روی دادههای خروجی ابر نقاط مورد استفاده قرار میگیرد. این محیط با توجه به نوع شکل ورودی، چندین روش مختلف برای بازسازی سطوح ارائه میدهد.[۱] [​IMG]

    مهندسی معکوس طراحی به کمک عکس
    از عمده کاربردهای مهندسی معکوس، طراحی یک مدل سه بعدی با استفاده از عکس و یا تصویر سه نما می‌باشد. محیط کاری (FreeStyle Sketch Tracer (FSK بخشی از مجموعه طراحی سطوح CATIA شما را قادر می‌سازد تا طرح‌ها، عکس‌ها و یا هر نوع ترسیمه دوبعدی را وارد کرده و موقیعت و مقیاس آن را در فضای سه بعدی تعیین کنید. سپس می‌توانید از سایر محیط‌های طراحی سطوح یعنی FreeStyle، Generative Shape Design و Imagine & Shape برای ترسیم المان‌های هندسی بر روی این طرح‌ها استفاده نموده و در نهایت مدل سه بعدی مورد نظر را ایجاد نمایید.[۲] [​IMG]

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

    تاریخ عضویت:
    ‏23/6/15
    ارسال ها:
    4,491
    تشکر شده:
    6,069
    امتیاز دستاورد:
    113
    جنسیت:
    مرد
    حرفه:
    Engineering Management
    [​IMG]

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

    در صورتی که به طور خاص کشور ژاپن را زیر نظر بگیریم، خواهیم دید که تقریبا تمامی مردم دنیا از نظر کیفیت، محصولات آنها را تحسین می کنند ولی به آنها ایراد می گیرند که ژاپنی ها از طریق کپی برداری از روی محصولات دیگران به این موفقیت دست یافته اند.
    این سخن اگر هم که درست باشد و در صورتی که کپی برداری راهی مطمئن برای رسیدن به هدف باشد چه مانعی دارد که این کار انجام شود.این مورد، به خصوص درباره ی کشورهای در حال توسعه ویا جهان سوم به شکاف عمیق فن آوری بین این کشورها و کشورهای پیشرفته دنیا، امری حیاتی به شمار می رود و این کشورها باید همان شیوه را پیش بگیرند(البته در قالب مقتضیات زمان و مکان و سایر محدودیت ها) به عنوان یک نمونه، قسمتی از تاریخچه ی صنعت خودرو و آغاز تولید آن در ژاپن را مورد بررسی قرار می دهیم:
    تولید انبوه خودرو در ژاپن قبل از جنگ جهانی دوم ودر سال 1920 بوسیله ی کارخانه های "ایشی کاواجیما" آغاز شد که مدل ژاپنی فورد آمریکایی را کپی کرده و به شکل تولید انبوه به بازار عرضه نمود.
    همچنین شورلت ژاپنی AE جزو اولین خودرو های کپی شده آمریکایی توسط ژاپنی ها بود که به تعداد زیاد تولید می شد. سپس با تلاش های فراوانی که انجام شد(آنهم در شرایط بحرانی ژاپن در آن دوره) مهمترین کارخانه‌ی خودرو سازی ژاپن یعنی "تویوتا" درسال 1932 فعالیت خود را با ساخت خودرویی با موتور "کرایسلر" آغاز نمود ، در سال 1934، نوع دیگری از خودرو را با موتور"شورلت" ساخته و وارد بازار نموده و از سال 1936، اولین تلاش ها برای ساخت خودروی تمام ژاپنی آغاز شد. البته تا مدت ها ژاپنی ها مشغول کپی برداری از اتومبیل های آمریکایی و اروپایی بودند.
    آنها خودروی پاکارد و بیوک آمریکایی و رولزرویس، مرسدس بنز و فیات اروپایی را نیز تولید کردند که همین تولیدها زمینه ساز گسترش فعالیت خودروسازی ژاپن شد و سرانجام در دهه ی 1960 میلادی پس از سعی و کوشش فراوان ، اولین اتومبیل تمام ژاپنی که ضمنا دارای استاندارد جهانی بود، تولید و به بازار عرضه شد.
    در تمامی مطاب فوق رد پای یک شگرد خاص و بسیار مفید به چشم می خورد که "مهندسی معکوس"(Reverse Engineering ) نام دارد.
    مهندسی معکوس روشی آگاهانه برای دستیابی به فن آوری حاضر و محصولات موجوداست. در این روش، متخصصین رشته های مختلف علوم پایه و کاربردی از قبیل مکانیک، فیزیک و اپتیک، مکاترونیک، شیمی پلیمر، متالورژی،الکترونیک و ...جهت شناخت کامل نحوه ی عملکرد یک محصول که الگوی فن آوری مذکور می باشد تشکیل گروه های تخصصی داده و توسط تجهیزات پیشرفته و دستگاه های دقیق آزمایشگاهی به همراه سازماندهی مناسب تشکیلات تحقیقاتی و توسعه های R&D "سعی در به دست آوردن مدارک و نقشه های طراحی محصول فوق دارند تا پس از مراحل نمونه سازی (Prototyping) و ساخت نیمه صنعتی (Pilot plant) در صورت لزوم ، تولید محصول فوق طبق استاندارد فنی محصول الگو انجام خواهد شد . همان گونه که اشاره شد استفاده از روش مهندسی معکوس برای کشورهای در حال توسعه یا عقب مانده روش بسیار مناسبی جهت دسترسی به فن آوری ، رشد و توسعه ی آن می باشد. این کشور ها که در موارد بسیاری از فن آوری ها در سطح پایینی قرار دارند، در کنار روش ها و سیاست های دریافت دانش فنی، مهندسی معکوس را مناسب ترین روش دسترسی به فن آوری تشخیص داده و سعی می کنند با استفاده از روش مهندسی معکوس، اطلاعات و دانش فنی محصولات موجود ، مکانیزم عمل کرد و هزاران اطلاعات مهم دیگر را بازیابی کرده و در کنار استفاده ار روش های مهندسی مستقیم (Forward Engineering) و روش های ساخت قطعات ، تجهیزات ، تسترهای مورد استفاده در خط مونتاژ و ساخت مانند قالب ها ،گیج و فیکسچر ها و دستگاههای کنترل، نسبت به ایجاد کارخانه ای پیشرفته و مجهز جهت تولید محصولات فوق اقدام نمایند. همچنین ممکن است مهندسی معکوس، برای رفع معایب و افزایش قابلیت های محصولات موجود نیز مورد استفاده قرار می گیرد. به عنوان مثال در کشور آمریکا ، مهندسی معکوس توسط شرکت "جنرال موتور" بر روی محصولات کمپانی "فورد موتور" و نیز برعکس، برای حفظ وضعیت رقابتی و رفع نواقص محصولات به کار برده شده است.
    بسیاری از مدیران کمپانی های آمریکایی، هر روز قبل از مراجعت به کارخانه، بازدیدی از جدیدترین محصولات عرضه شده در فروشگاه ها و نمایشگاه های برگزار شده انجام داده و جدیدترین محصولات عرضه شده مربوط به محصولات کمپانی خود را خریداری نموده و به واحد تحقیق و توسعه (R&D) تحویل می دهند تا نکات فنی مربوط به طراحی وساخت محصولات مذکور و آخرین تحقیقات ، هر چه سریع تر در محصولات شرکت فوق نیز مورد توجه قرار گیرد.
    جالب است بدانید که مهندسی معکوس حتی توسط سازندگان اصلی نیز ممکن است به کار گرفته شود . زیرا به دلایل متعدد، نقشه های مهندسی اولیه با ابعاد واقعی قطعات (مخصوصا زمانی که قطعات چندین سال پیش طراحی و ساخته و به دفعات مکرر اصلاح شده اند)مطابقت ندارد برای مثال جهت نشان دادن چنین نقشه هایی با ابعاد واقعی قطعات و کشف اصول طراحی و تلرانس گذاری قطعات، بخش میکروسویچ شرکت(Honywell) از مهندسی معکوس استفاده نموده و با استفاده از سیستم اندازه گیری CMM (Coordinate Measuring Machine) با دقت و سرعت زیاد ابعاد را تعیین نموده و به نقشه های مهندسی ایجاد شده توسط سیستم CAD منتقل می کنند.
    متخصصین این شرکت اعلام می دارند که روش مهندسی معکوس و استفاده از ابزار مربوطه، به نحو موثری زمان لازم برای تعمیر و بازسازی ابزارآلات ، قالب ها و فیکسچرهای فرسوده را کم می کند و لذا اظهار می دارند که "مهندسی معکوس زمان اصلاح را به نصف کاهش می‌دهد."
    مهندسین معکوس، اضافه بر اینکه باید محصول موجود را جهت کشف طراحی آن به دقت مورد مطالعه قرار دهند، همچنین باید مراحل بعد از خط تولید یعنی انبارداری و حمل و نقل را از کارخانه تا مشتری و نیز قابلیت اعتماد را در مدت استفاده ی مفید مورد تجزیه و تحلیل قرار دهند. چرا که مثلا فرایند آنیلینگ مورد نیاز قطعه،ممکن است برای ایجاد مشخصات مورد نظر در هنگام عمل کرد واقعی محصول یا در طول مدت انبارداری و حمل و نقل طراحی شده و لزوم وجود آن تنها در هنگام اجرای مراحل مذکور آشکار خواهد شد.
    چه بسا که بررسی یک پیچ بر روی سوراخی بر بدنه ی محصول(که به قطعات و اجزای دیگر متصل نشده) ، متخصصان مهندسی معکوس را ماه ها جهت کشف راز عملیاتی آن به خود مشغول کند، غافل از اینکه محل این پیچ، امکانی جهت تخلیه ی هوا، تست آب بندی یا امکان دسترسی به داخل محصول جهت تست نهایی می باشد. از سوی دیگر مهندسین معکوس باید عوامل غیر مستقیمی را که ممکن است در طراحی و تولید محصول مذکور تاثیر بگذارند، را به دقت بررسی نمایند. به دلیل اینکه بسیاری از این موارد با توجه به خصوصیات و مقتضیات زمانی و مکانی ساخت محصول مورد نظر، توسط سازندگان اصلی توجیه پذیر باشد اما ماجرای آن به وسیله ی مهندسین معکوس فاجعه ساز باشد. مثلا فرایند تولید قطعات تا حدود قابل توجهی بستگی به تعداد محصولات مورد نیاز و ... دارد . اگر تعداد محصولات مورد نیاز جهت کشور ثانویه در بسیار کمتر از کشور اصلی که در حد جهانی و بین‌المللی فعالیت نموده ، باشد پس به عنوان مثال تعیین فرایند یک قطعه با باکالیتی (نوعی مواد پلیمری) از طریق ساخت قالب های چند حفره ای با مکانیزم عملکرد خود کاربا توجه به معضلات پخت قطعه در داخل قالب ، می تواند برای مجریان مهندسی معکوس فاجعه ساز باشد ( اگر که این مهندسان از فرایند های ساده تر با توجه به تیراژ تولید محصول و نیز خصوصیات تکنولوژیکی کشور خود استفاده نکنند.) بنابراین، مرحله ی بعد از کشف طراحی، تطبیق طراحی انجام شده بر مقتضیات زمانی و مکانی کشور ثانویه می‌باشد که باید به دقت مورد توجه متخصصین مهندسی معکوس واقع شود.
    خلاصه اینکه مهندسی معکوس ممکن است یک کاربرد غیر معقول و نامناسب از کاربرد هنر و علم مهندسی به نظر برسد، اما آن یک حقیقت از زندگی روزمره ی ما به شمار می رود.
    منبع اصلی مقاله:
    انجمن علمی دانشکده مهندسی مکانیک دانشگاه امیرکبیر
     
    aygin از این پست تشکر کرده است.