PDA

View Full Version : سوال: امنیت نرم افزارهایی که با دات نت نوشته شده اند



PetekDincos
پنج شنبه 30 تیر 1390, 22:51 عصر
با سلام
در مورد امنیت نرم افزارهایی که با دات نت نوشته شده اند چون برنامه های که با دات نت نوشته شده اند هنگام کامپایل به زبان میانی MS IL ثبدیل می شن و در کامپیوتر مقصد به وسیله CLR دات نت به زیان ماشین تبدیل می شن برای اجرا شدن و زبان MSIL نسبت به زبان ماشین راخت تر decompile می شه در نتیجه ریسورس کردن برنامه هایی که به زبان هایی مثل #C و یا جاوا نوشته شده اند راخت تر است نسبت به زبان هاب Native مثل Delphi و ++C چون این ها موقع کامپایل به زبان ماشین تبدیل می شن و خود من با WPF یه نرم افزار نوشتم که فایل اجراییش تقریبا نزدیک 20 MB است و به نظر من هیچ پروتکتوری نمی تونه امنیت 100 درصد رو برای ریسورس نشدن فایل های کامپایل شده دات نت ایجاد کنه و به همین خاطر من این سوال رو دارم که آیا می شه در خود سورس برنامه به وسیله قفل های کوچک مثل چک کردن CRC و غیره فقط به پروتکتور و قفل سخت افزاری اکتفا نکنم چون اگر برنامه آنپک شد و قفل سخت افزاری هم دور زده شده و برنامه به اصطلاح کرک شده دست کاربر نهایی رسید این قفل های کوچک با عث بشن که برنامه درست کار نکنه و کرکر هم نمی تونه تو یه برنامه بزرگ همه این قفل ها رو پیدا کنه و دور بزنه آیا این کار رو میشه کرد یا نه چون من از امنیت نرم افزار سر رشته ندارم با تشکر

Nima NT
پنج شنبه 30 تیر 1390, 23:13 عصر
روشی که شما گفتید نمیتونه جلوی دکامپایل شدن برنامه رو بگیره وبرای اینکار حتما" لازم هست از پروتکتور استفاده کنید ولی میتونه کار کراکر رو سخت تر کنه ، در برنامه های کوچیک پیدا کردن این نقاط کار زیاد سختی نیست ولی اگر برنامه کمی بزرگ باشه و برنامه نویس کمی کاربلد باشه میتونه کار رو کمی سخت تر کنه ، البته لازم هست بگم که اگر برنامه نویس از امور کدنویسی امنیتی اطلاعات کافی داشته باشه میتونه کار رو سخت تر کنه در غیر این صورت معمولا" فرقی نخواهد کرد.

PetekDincos
پنج شنبه 30 تیر 1390, 23:38 عصر
با سلام
من هم نمی گم این کار باعث می شه که برنامه دکامپایل نشه و حتما بایستی از پروتکتور هم استفاده کرد تا جایی که ممکنه برنامه ریسورس نشه اما اگر برنامه ریسورس شد و قفل هم دور زده شده این قفل های کوچک به داد برنامه برسه چون اکتفا کردن محض به یه پروتکتور و قفل سخت افزاری به نظر من اشتباهه چون هر قفلی و یا پروتکتوری یه روزی دور زده می شه با تشکر

Nima NT
پنج شنبه 30 تیر 1390, 23:55 عصر
بله این کاملا" صحیح هستش ولی عرض کردم این تکنیک هم یه جورایی به سواد برنامه نویس در حوزه امنیت بستگی داره.

mg_mahyar
سه شنبه 01 شهریور 1390, 05:46 صبح
یه بحثی هست. اول اینکه برنامه رو به سورس برگردونن مهولا با دات نت رفلکتور. در این صورت بر نامه نویس هر کاری بکنه کدش دست کرک هست و کافیه توی کد قفل هارو حذف کنه.
دوم اینکه قفل بزارن برای برنامه که برنامه کرک نشه. : اول اینکه اگر سور برگرده برنامه داستان بی معنیه چون کد رو تغییر میده.
دوم: کرک میشه هر قفلی.
راه حل:
برنامه قبل از اجرا چک کنه کدوم نرم افزرا ها در ویندوز در حال اجرا هستند: مثلا olydebug یا .... اگر پراسس اینا در حال اجرا بود برنامه اجرا نشود. این کارو کمی مشکل تر میکنه.

علیرضا حسن زاده
پنج شنبه 03 شهریور 1390, 14:06 عصر
برنامه قبل از اجرا چک کنه کدوم نرم افزرا ها در ویندوز در حال اجرا هستند: مثلا olydebug یا .... اگر پراسس اینا در حال اجرا بود برنامه اجرا نشود. این کارو کمی مشکل تر میکنه.
چرا مشکل میکنه؟ خیلی راه ها برای دور زدن این راه هست که ساده ترینش تغییر نام برنامه دیباگر هست بدون نیاز به هیچ دست کاری در سورس برنامه و ... (کدهای آنتی دیباگ خیلی بهتر از اینها عمل میکنن)
به این نکته که آقای نیکجو هم اشاره کردن توجه کنید:

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

mg_mahyar
پنج شنبه 03 شهریور 1390, 17:21 عصر
مطلب اینه کرک کننده همیشه یک قدم جلو تر از برنامه نویسه. کلا قفل گزاشتن چیز خوبی نیست. هزینه اضافی داره. و فایده هم نداره. اگر قبل شروع برنامه به مصرف کننده بگن وجدان داشته باش کپی نکن اثرش بیشتره