False .دقیقا مثل برنامه ی
ما استفاده کنه معادل داشتن سورس اولیه است و به اندازه سورس اولیه
اهمیت داره.
اگر به تایتل بخش نگاه کنی نوشته "امنیت نرم افزار" و توضیحاتی که طی دو جواب قبلی دادم به وضوح مشخص میکنه که :
- هدف از مهندسی معکوس درک نحوهء عملکرد نرم افزار است ، دقیقا" همانطوری که نوشته شده ، و نه تولید چیزی که مثل او ، یا به همان خوبی ، یا حتی بهتر ، کار کنه .
- تولید کد مشابه ، ارزشی نداره ، چون میشه فعل A رو به هزار و یک روش انجام داد ، و تو میتونی انواع مختلفی از یک تابع رو به زبان اسمبلی و به اشکال مختلف بنویسی که یک کار رو انجام بده ، اما احتمالا" تعداد معدودی از اونها ممکنه نقیصه امنیتی داشته باشند ، یا اجازه دسترسی های غیر مجاز رو فراهم کنند یا امکان فراخوانی توابع و روتینهای غریبه یا عبور از حفاظهای امنیتی رو ایجاد کنند ، فلذا داشتن صد کد مختلف که دقیقا" یک کار رو میکنند ، برای یک نفوذگر نرم افزاری ، که در حال بررسی یک کد باینری با عملکردی مشابه است مطلقا" ارزش و فایده نداره .
- تو نرم افزار رو بررسی میکنی که دقیقا از خطاها یا نواقص منطقی اون با خبر بشی و بتونی به نحو احسن ، رفتار مورد نظرت رو انجام بدی ؛ تولید کدی که بتونه مثل نرم افزار مورد نظر تو کار بکنه ، کمکی به تو نخواهد کرد ، چون اون فقط داره مثل برنامهء مورد نظرت کار میکنه ، شاید حتی 99 درصد جزئیات پیاده سازی اش هم مشابه نرم افزار مورد نظر تو باشه اما مثلا" یک فراخوانی Sprintf متفاوت که "خروجی" مشابهی ایجاد میکنه میتونه برای نرم افزار اصلی یک نقیصه به حساب بیاد در حالیکه ممکنه نرم افزار دوم که به روشی مصنوعی تولید شده حاوی این نکته نباشه .
- در یک کلام ، هدف باز تولید ، چیزی که "مانند" هدف باشه ، نیست . موضوعیت این مبحث ، نزدیک شدن به "خود" هدف است ، همانطور که پیاده سازی شده ، نه آنطوری که ما فکر میکنیم ممکنه پیاده سازی شده باشه .
موفق باشی