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