مقدمه
مهندسی معکوس فرایند اکتشاف فن آوریهای بکار رفته در یک دستگاه، شی و یا سیستم از طریق تحلیل ساختار، عملکرد و وظیفه آن میباشد. معمولاً از این فرایند برای دست یابی به (برای مثال یک دستگاه مکانیکی، قطعه الکترونیکی و یا برنامه نرمافزاری) و تحلیل جزییات نحوه عملکرد آن در نگهداری یا ساخت یک دستگاه یا برنامه مشابه استفاده میشود. حاصل این فرایند مشابه کپی کردن یک چیز از روی اصل آن میباشد.
درک سیستم نرمافزاری بر هر نوع تغییر مقدم است. فرآیند درک، مقدار زیادی از کل زمان صرف شده را در اِعمال تغییر میگیرد. نگهدارندگان دلایلی از جمله مستندات ناصحیح یا قدیمی، نبود مستندات، پیچیدگی سیستم و عدم شناخت کافی از قلمرو را علت فقدان درک صحیح از سیستم میدانند. راه تسهیل این مسایل، خلاصه کردن اطلاعات مربوط به سیستم (مثل تبین مشخصات و طرح) از طریق کد منبع است، بهشکلی که درک آنرا بالا برد.مهندسی معکوس تکنیکی است که میتوان از آن برای این کار استفاده کرد ، مهندسی معکوس به تنهایی منجر به تغییر در برنامه نمیشود، بلکه فقط راه را برای اجرای آسانتر تغییراتِ مطلوب هموار مینماید. تغییرات با استفاده از فنونی چون مهندسی پیشرو، بازسازی، و مهندسی مجدد پیادهسازی میشوند.
هدف از مهندسی معکوس تسهیل در اِعمال تغییر از طریق فهمیدن سیستم نرمافزاری با توجه به ماهیت کار، چگونگی کار و نمایش معماری آن است. بهعنوان اهداف پیگیریِ این مقصود میتوان به ترمیم اطلاعات از دست رفته، تسهیل جابهجایی بین بسترها، بهبود و (یا) تهیهٔ مستندات جدید، استخراج عناصر قابل استفادهٔ مجدد، کاهش تلاش برای نگهداری، مقابله با پیچیدگی، کشف عوارض جانبی، کمک به انتقال به محیط CASE و ایجاد محصولات مشابه یا رقابتی اشاره کرد. از دیگر مزایای مهندسی معکوس کاهش هزینهها و سریع آماده شدن نرم افزار است.
براي مثال هنگاميكه يك خودرو به بازار ميآيد رقيبان آن شركت توليدي ، مدلي از خودرو را تهيه كرده و آن را جداسازي ميكنند (Disassembling) تا طرز كار و چگونگي ساخت آن را ببينند و از تكنيكهاي آن در توليدات خود استفاده كنند ؛ يا در مهندسي راه و ساختمان از طرح پلها و ساختمانهاي قديمي كه هنوز پابرجا باقي ماندهاند كپي گرفته ميشود و در مورد چگونگي ساخت آنها ، مواد اوليه استفاده شده و علل سالم ماندن آن تحقيق ميشود تا در طرحهاي خود براي استحكام بيشتر استفاده كنند .
در بعضي موارد طراحان ، شكلي از ايدههايشان را با استفاده از گچ ، سفال و ... نشان ميدهند (ساخت ماكت) كه نيازي به اندازهگيري دقيق ندارد ؛ اين در حاليست كه مدل كامپيوتري (CAD) نياز به اندازهگيري دقيق قسمتهاي مختلف دارد و تا زماني كه اين اندازهها دقيق نباشند وارد كردن آن در CAD بسيار دشوار و حتي ناممكن است ؛ زيرا هيچ تضميني وجود ندارد كه مدل ارائه شده در CAD و مدلهاي ساخته شده بعدي با مدل اوليه مطابقت داشته باشند . مهندسي معكوس راه حلي براي اين مشكل دارد :
از نطر مهندسي معكوس در اين حالت مدل فيزيكي يك منبع اطلاعاتي مناسب براي مدل CAD است . در اين حالت با استفاده از ابعاد سهبعدي و اسكنرهاي ليزري و سطحنگارها با در نظر گرفتن ابعاد فيزيكي ، جنس ماده تشكيل دهنده و ديگر جنبهها يك مدل و الگوي پارامتري بدست ميآيد ؛ سپس اين مدل به CAD فرستاده ميشود و تغييرات نهايي روي آن انجام ميشود و سپس به دستگاههاي برش و توليد (CAM) فرستاده ميشود كه CAM اين قسمت فيزيكي را توليد مينمايد .
پس ميتوان گفت كه مهندسي معكوس با كالا آغاز ميشود و به فرايند طراحي ميرسد و اين دقيقا مخالف مسير روش توليد (Product Definition Statement = PDS) است و به همين علت آن را مهندسي معكوس ناميدهاند . به وسيله اين روش بيشترين اطلاعات ممكن درباره ايدههاي مختلف طراحي كه براي توليد يك كالا استفاده ميشود بدست ميآيد . بدين وسيله هم ميتوان كالا را دوباره توليد كرد و هم ميتوان از ايدههاي مفيد آن براي توليد كالايي جديد بهره برد . همين امر باعث شده كه مهندسي معكوس به يكي از شاخههاي مهم مهندسي تبديل گردد و همواره نگاهها به سوي توليدات وارد شده به بازار جلب شود .
فهرست
مقدمه4
تاریخچه کاربردی مهندسی معکوس 6
مزايا و دستاوردهاي مهندسي معكوس10
متدولوژي مهندسي معكوس12
ضرورت شناخت رفتار فناوری برای انتخاب استراتژی مناسب.15
نگاهی به مهندسی مجدد16
دنیای Crack
بخش اول:
معرفی19
بخش دوم:
Reverse Engineering یا مهندسی معکوس چیست؟21
بخش سوم:
برنامه های امروزی و حفاظت از آنها22
بخش چهارم:
رابطه Reverse Engineering و Assembly26
بخش پنجم:
نگاهی به کدینک29
مهندسی معکوس و امنیت در دنیای نرم افزار34
نتیجه گیری 40
منابع41