جستجو در محصولات

گالری پروژه های افتر افکت
گالری پروژه های PSD
جستجو در محصولات


تبلیغ بانک ها در صفحات
ربات ساز تلگرام در صفحات
ایمن نیوز در صفحات
.. سیستم ارسال پیامک ..
امنيت در نرم افزار و برنامه نويسي (قسمت سوم)
-(6 Body) 
امنيت در نرم افزار و برنامه نويسي (قسمت سوم)
Visitor 543
Category: دنياي فن آوري
Decompiler به لحاظ "تئوريک" يعني ابزاري براي تبديل يک برنامهء باينري اجرائي يا يک کتابخانه يا درايور به سورس کد اصلي ؛ قبل از ورود به بحث لازمه يک طبقه بندي از موجوديتهائي که ممکنه ذيل عنوان Decompiler مطرح بشن داشته باشيم :
• - برنامه هاي اجرائي باينري : برنامه هائي که عموما" با زبانهاي سطح بالائي نظير VC يا دلفي نوشته ميشن و به کدهاي "مخصوص" به ويندوز/معماري ماشين ( مثلا" Win32/IA32 يعني ويندوز 32 بيتي روي اينتل 32 بيتي ) ترجمه ميشن .
- کتابخانه هاي اشتراکي : بسته هاي نرم افزاري که عموما با زبانهاي سطح بالا براي کاربري در ساير برنامه ها توليد ميشن و وابسته به سيستم عامل و معماري سخت افزاري هستند .
- برنامه هاي تفسيري : برنامه هائي که قبل از هر بار اجرا بايد توسط يک مفسير ترجمه بشن . به عنوان مثال برنامه هاي VB6 که بصورت PCode منتشر ميشن و هر بار قبل از اجرا توسط VB runtime تفسير ميشن .
- برنامه هاي مبتني بر زمان اجرا : برنامه هائي که براي اجرا نياز به بستر از پيش فراهم شده اي براي روند اجرا دارند . مانند برنامه هاي دات نت و جاوا .
- درايور ها : کدهاي سطح کرنلي که مختص سيستم عامل و معماري سخت افزاري هستند و عموما با زبانهاي سطح پائين توليد ميشن .

سوال : آيا معناي تئوريک Decompiler براي همه اين گروهها محقق شده ؟ ميشه ؟ خواهد شد ؟

جواب : خير .
هيچ Decompiler اي براي گروهاي اول و دوم و پنجم ارائه نشده ، نميشه ، نخواهد شد . يعني دريافت سورس کد کامل نرم افزارهاي اجرائي از نسخه باينري اونها مطلقا" غير ممکنه . اين عدم امکان فني نيست که در آينده با پيشرفت دانش امکان پذير بشه ؛ يک نفي منطقي است . يعني منطقا" امکان باز-توليد سورس کد کامل يک برنامه توليد شده با محيطهائي مثل Delphi يا VC وجود نداشته ، نداره ، نخواهد داشت .
سوال : پس نرم افزارهاي متعددي که تحت عنوان Decompiler منتشر ميشن چي ؟
جواب : با توجه به تعريف Decompiler ، جواب داده شد .

سوال : در مورد گروه هاي سوم و چهارم چي ؟

جواب : براي اين دو گروه Decompiler وجود داشته و داره ؛ با يک توضيح کوچک . برنامه هائي هستند که ميتونن از برنامهء اجرائي VB ( به عنوان نماينده گروه سوم ) يک سورس کامل قابل کامپايل توليد کنند ، اما ، اين سورس ، لزوما" قرار نيست همان سورسي باشد که توسعه گران نرم افزار توليد کرده اند ؛ براي دات نت ( نمايندهء گروه چهارم ) نيز Decompiler هاي متعددي وجود داره ؛ اما هيچکدام قول نميدهند خروجي آنها لزوما" همان سورس کدي باشد که برنامه از آن توليد شده .
سوال : آيا اصولا" وجود Decompiler لازمه ؟
جواب : براي اهداف مثبت و خيرخواهانه خير . حتي براي اهداف غير خيرخواهانه نيز وجود Decompiler يک لازمه نيست . هيچ کسي از وجود ابزاري که بتونه برنامهء او رو به سورس قابل قبولي مبدل کنه خوشحال نخواهد شد ؛ اين ابزار کمکي به توسعه نرم افزار نميکنه و سود اقتصادي ، پيشرفت علمي و افزايش قابليتهاي صنعت نرم افزار رو بيشتر نخواهد کرد . حتي براي اهداف مخرب هم ، وجود چنين ابزاري لازم نيست چون بسياري از کساني که در اين مسير فعاليت ميکنند براي تخريب امنيت يک نرم افزار نيازي به دست رسي به سورس اون ندارند . کشف نقاط ضعف امنيتي يا عبور از حفاظهاي نرم افزار عموما" در محيطهائي اتفاق مي افته که سورس وجود نداره و تمام فرآيند تخريب از طريق مهندسي معکوس يا Reverse Engineering انجام ميگيرد .

سوال : برنامه هائي که با جاوا و دات نت نوشته ميشن چقدر امن هستند ؟

جواب : چون نقطهء صفري وجود نداره ، ميزاني قابل ارائه نيست ؛ اما در مقام مقايسه :
• - بررسي و Trace و بازبيني روند اجرا ي برنامه هائي که با محيطهائي نظير دات نت و جاوا توليد ميشوند ، به مراتب دشوار تر از برنامه هائي است که با محيطهائي نظير دلفي و VC توليد ميشوند؛ چرا که وجود Runtime هاي بزرگي مانند JRE يا CLR باعث ميشه پيچيدگي فراخواني ها ، مديريت حافظه ، مديريت ريسمان ها و پردازه ها و غيرهم به مراتب از برنامه هاي اصطلاحا" Native ( مانند خروجي هاي VC ) بيشتر باشه . پس في المثل درک جزئيات فني يک الگوريتم ، وقتي با دات نت نوشته شده باشه و به خوبي با Framework مخلوط باشه واقعا" دشوار تر از درک جزئيات فني الگوريتمي که با Delphi کامپايل شده .
- عبور يا تخريب حفاظهاي نرم افزارهائي که با زبانهاي نظير جاوا و دات نت نوشته ميشن به مراتب آسون تر از برنامه هائي است که با امثال دلفي و VC توليد ميشن . چرا که اگر از درک جزئيات يک الگوريتم بگذريم ، وابستگي کامل اين برنامه ها به يک لايهء مياني به نام زمان اجرا و عدم وابستگي به عناصر زير ساختي سستم عامل و پردازنده و سخت افزار و همچنين امکانات بيشتر نفوذگران نرم افزار در تغيير محتويات اين برنامه ها باعث ميشن از اين ديدگاه ، برنامه هاي Native وضع بهتري داشته باشند .
• ( ميگذريم از اين حقيقت که براي يک حرفه اي ، اهميت خاصي نداره که يک برنامه با دلفي کامپايل شده يا Managed CPP )

سوال : روشهاي حفاظتي که براي مقابله با Decompiler ها مورد استفاده قرار ميگيره چقدر قابل اعتمادند ؟

جواب : براي امثال دات نت و جاوا ، تقريبا" هيچ . براي ساير محيطها ، Decompiler دشمن خطرناکي به حساب نمياد . في المثل برنامه اي با عنوان DeDe با Delphi Decompiler مدعي است که يک Decompiler براي دلفي است ؛ اما در واقع تو فقط ميتوني يک سري اطلاعات دريافت کني ؛ و نه سورس کد کامل . ممکنه در برخي موارد اين اطلاعات بتونه به يک نفوذگر نرم افزاري کمک خاصي بکنه ؛ اما من حيث مجموع ، اينگونه برنامه ها تهديد خطرناکي به حساب نميان . بگذريم از اين واقعيت که يک نفوذگر نرم افزاري براي حذف روتين حفاظتي نرم افزار يا جستجوي يک سرويس براي نقاط ضعف متداول ، نيازي به يک Decompiler نداره . تمام وقايع تلخي که سالهاست شاهدش هستيم داره تحت شرايطي مي افته که هيچ Decompiler ضعيفي هم وجود نداره.
منبع:www.barnamenevise.ir
Add Comments
Name:
Email:
User Comments:
SecurityCode: Captcha ImageChange Image