PDA

View Full Version : در حال حاضر (سال 97) بهترین راه واسه امن کردن برنامه های دات نت چیه؟؟؟



rahmatipoor
چهارشنبه 27 تیر 1397, 02:15 صبح
با عرض سلام

در حال حاضر آیا روش و شیوه ی موثری برای امن کردن و پروتکت کردن نرم افزارهای نوشته شده با دات نت وجود داره یا خیر.

با تشکر

cmsdqq2
پنج شنبه 28 تیر 1397, 00:59 صبح
با عرض سلام

در حال حاضر آیا روش و شیوه ی موثری برای امن کردن و پروتکت کردن نرم افزارهای نوشته شده با دات نت وجود داره یا خیر.

با تشکر


صرفاً جهت جلوگیری و خریدن دقایقی زمان بله - البته برای افراد برنامه نویسی مثل بنده که سطح بسیار پایینی دارند -

farhad_shiri_ex
پنج شنبه 28 تیر 1397, 03:07 صبح
با عرض سلام

در حال حاضر آیا روش و شیوه ی موثری برای امن کردن و پروتکت کردن نرم افزارهای نوشته شده با دات نت وجود داره یا خیر.

با تشکر

دوست عزیز!
تا منظور شما از امن کردن چی باشه!
- موضوع دی کامپایل نشدن سورس کدها یک قضیه است..
- موضوع فروش نرم افزار و توکن های نرم افزاری ویا سخت افزاری یک قضیه است..
- موضوع امنیت داده های نرم افزار شما در DBMS یک قضیه است..
- موضوع کرک نشدن نرم افزار یک قضیه است..
- اگر تحت وب هست که یکسری داستان دیگه هم اضافه می شوند!!

حالا منظورتون را شفاف تر بیان کنید؟

rahmatipoor
پنج شنبه 28 تیر 1397, 11:08 صبح
با تشکر
منظورم جلوگیری از کرک شدن و دی کامپایل سورس کدهای یک نرم افزارهای دسکتاپ هست

farhad_shiri_ex
جمعه 29 تیر 1397, 04:28 صبح
با تشکر
منظورم جلوگیری از کرک شدن و دی کامپایل سورس کدهای یک نرم افزارهای دسکتاپ هست

برای سخت تر کردن کرک کردن برنامه راه های زیادی وجود داره که قطعا نمیشه تو چند تا سطر بیان کرد.
مبحث امنیت در نرم افزار برای جلوگیری از کرک نشدن دوبخش داره یکی در هنگام نوشتن کدها هست که خوب تکنیک های زیادی هست که باید رعایت کنید البته یک بخشی هم مربوط به کامپایلر مورد استفاده شما هم میشود و بخش دوم مربوط به خروچی باینری گرفتن و محافظت از این باینری فایل واحیانا ملحقات همراه اون هست.
اول بخش دوم کمی به اختصار توضیح میدم عمری باقی بود الباقی تجربیات خودم را بیان خواهم کرد !
1- وقتی باینری فایل پروژه آماده شد باید با استفاده از برنامه هایی که برای Pack ویا برای Protect کردن فایلهای باینری هستند اقدام به پک کردن کنید که البته روش های زیادی هست و اونهم برای خودش تکنیکهای زیادی داره. در ضمن برای قوی تر کردن امنیت برنامه هاتون باید خودتون دست به کار بشید و مطالعاتی بر روی این تکنیک ها مثلا Packers , Unpackers ها ویا برنامه های Debuger ویا استفاده از تزریق کد استاتیک اسمبلی به برنامه ویا تزریق کد دینامیک به برنامه و استفاده از الگوریتم های رمز نگاری که اصولا Hash چی هست و ... داشته باشید تا بتونید امنیت قابل قبولی برای برنامه های خودتون ایجاد کنید.

2- استفاده از قفل های سخت افزاری که با special ID محافظت می شوند در برنامه هاتون استفاده کنید والبته استفاده از این قفلها هم یکسری تکنیک برنامه نویسی داره که حتما باید رعایت بشه.!
3- جلوگیری از دیباگ کردن برنامه با استفاده از CRC کدها در زمان استفاده از DLL , OCX در نرم افزار
4- استفاده از برنامه هایی که به Exe Encryption معروف هستند برای کد کردن داده های رشته ای که در برنامه استفاده کردید.
5- استفاده از کدهای نامعلوم در بین کدهای نرم افزار برای سخت تر کردن debug توسط کرکر مثل استفاده از دستور Macro اسمبلی که بعضی از دیباگرها را به دردسر میندازه.
6- اگر برنامه شما نسخه تریال داره هرگز منوها و امکانات برنامه را به صورت غیر فعال در نسخه تریال قرار ندید بلکه سورس اصلی را درا ین نسخه قرار ندید از تکنیکهای ماژولار مثل استفاده از DLL ویا OCX استفاده کنید.

برای دی کامپایل نشدن هم که باید از درهم ساز های سورس کد استفاده کنید به همراه برنامه هایی که برای اینکریپت کردن هستند تا حداقل کار مهندسی معکوس را سخت تر کنید وگرنه تمامی زبانهایی که به یک زبان میانی تفسیر می شوند این اشکال را دارند که به راحتی دی کامپایل می شوند مثل سی شارپ مثل جاوا مثل اندروید و...
البته اخیرا برخی برنامه های ایرانی ادعا میکنند که فایل را طوری اینکریپت میکنند که خیلی از دی کامپایلرها نمی تونند کاری کنند البته من استفاده نکردم ولی به هر حال برنامه های مشابه زیادی وجود داره که باینری فایل نرم افزار را محافظت میکنند ولی اینکه صد در صد باشه محال ممکن هست.
به هر حال این مبحث امنیت هم خیلی وسیع هست وهم خیلی مشکل نیاز به تجربه زیادی داره و البته یک سطح توقع قابل قبول در امنیت نرم افزار باید داشته باشید چون به هر حال یک روزی هر قفلی شکسته میشه و هر برنامه ای هم کرک خواهد شد شما باید تصمیم بگیرید که چه برنامه ای مینویسید و چه درجه ای از امنیت لازمه کارتون هست.
به نظر من در برهه ای که الان داخلش هستیم چالش بزرگ حفظ امنیت اطلاعات و حفط تکنیکهای موفقیت یک نرم افزار هست تا دسترسی به سورس کدهای یک نرم افزار شاید 10 - 15 سال پیش این داستان دی کامپایل خیلی ارزش داشت اونهم بخاطر اینکه وب انقدر در دسترس نبود الان به سمتی میریم که برنامه های دسکتاپ بیشتر تخصصی هستند و اکثر برنامه های کاربردی عمومی تحت وب هستند.
واین یک بخش کوچکی از بحث امنیت نرم افزار هست امنیت اطلاعات و نگهداری از اطلاعات روش های نفوذ به سرورهای اطلاعاتی و ... بخشهایی هستند که هر کدوم به راحتی یک کتاب 500 صفحه ای دارند.

rahmatipoor
جمعه 29 تیر 1397, 11:33 صبح
خیلی ممنون و متشکر از شما
پس خودمون باید دست به کار بشیم و یه ابزار خاصی ( مثلا یه پروتکتور خاص ) که این کارها رو انجام بده و امنیت قابل قبولی داشته باشه وجود نداره؟

این پروتکتورهای داخلی که دوستان این سایت طراحی کرده بودن ( آقا نیما و آقا رهام ) خبری ازشون نیست و سایتهاشون بالا نمیاد

نظرتون در مورد تحت وب کردن برنامه ها چیه ( از لحاظ امنیت )؟

farhad_shiri_ex
شنبه 30 تیر 1397, 04:03 صبح
خیلی ممنون و متشکر از شما
پس خودمون باید دست به کار بشیم و یه ابزار خاصی ( مثلا یه پروتکتور خاص ) که این کارها رو انجام بده و امنیت قابل قبولی داشته باشه وجود نداره؟


دوست عزیز چرا وجود نداره تا دلت بخواد هست که از برنامه ها محافظت کنه!
مثل RLPack(Reversing Labs packer) , UPX GUI , ARM Protector ,WinUpack این برنامه ها همه Packer هستند.

من گفتم برای نحوه استفاده باید خودتون دست به کار بشید و مطالعه دراین باره داشته باشید.

برای اون پروتکت های فارسی هم که سالها پیش کار میکردن که البته 90 درصدشونم برای دلفی بود عرض کردم من از اون برنامه ها استفاده نکردم. دلیل اینکه نیستند هم که عرض کردم با تکنولوژی های که برای برنامه نویسی ابداع شدند و رشد اینترنت در مقوله مهندسی نرم افزار و البته هزینه بر بودن محیط های برنامه نوسی مثل دلفی ویا حتی سی شارپ اونهم وقتی مثلا میتونی با یک ReactJS هر برنامه درست کنید اونهم با رعایت خیلی از اصول مهندسی نرم افزار مطمئنا دیدگاه برنامه نویس ها هم خیلی تغییر کرده و اون سایت ها هم از کار بیکار شدند شاید برای این هست که نیستند.

اگر به زبان C و به زبان سی پلاس پلاس و ربان اسمبلی اشراف داشته باشید نوشتن یک Exe Protector خیلی هم کار سختی نیست با یکم سعی و خطا میتونید انجامش بدید.

برای تحت وب نوشتن هم که بستگی به برنامه شما داره ولی به هر حال اونهم چالش های خودش داره شاید از این داستان دی کامپایل راحت بشید ولی امنیت اطلاعات اونجا براتون یکم کابوس می تونه بشه!
ولی هر کدوم هم معایب و مزایا خاص خودش را داره کافی یکم جستجو کنی!
به هر حال تا بود همین بوده و خواهد بود ما برنامه نویس ها قفل میکنیم یکسری آدم بیکار هم هستند مبان قفل های مارو باز میکنند 15 سال پیش به یک روش داستان برنامه قفل شکسته زیاد بود الان برنامه هایی که اطاعات شون به فنا میره زیاد شده و 15 سال دیگه هم به یک روش دیگه ای ....

terminator68
جمعه 09 آذر 1397, 15:28 عصر
دات نتی ها چون به نسبت برنامه های native یک IL کد دارن بهمین خاطر آخر سر کرک میشن..>!
حتی اگه از پروتکتور خاصی استفاده کنید.!

electera
یک شنبه 18 آذر 1397, 15:27 عصر
سلام. متوجه این بخش نشدم، میشه این بخش رو توضیح بدین:

"وقتی مثلا میتونی با یک ReactJS هر برنامه درست کنید اونهم با رعایت خیلی از اصول مهندسی نرم افزار مطمئنا دیدگاه برنامه نویس ها هم خیلی تغییر کرده و اون سایت ها هم از کار بیکار شدند شاید برای این هست که نیستند"
یعنی با ReactJS بیاییم امنیت برنامه رو ببریم بالا یا کلاً از ReactJS اسفاده کنیم؟
آخه ReactJS اصولاً سمت فرانت اند اون هم سمت وب کاربرد داره و اوپن سورسه و سمت دسکتاپ باید از React Native استفاده کنی که بعید میدونم مثل #C اینقدر قدرتمند باشه.

farhad_shiri_ex
یک شنبه 18 آذر 1397, 16:12 عصر
سلام. متوجه این بخش نشدم، میشه این بخش رو توضیح بدین:
یعنی با ReactJS بیاییم امنیت برنامه رو ببریم بالا یا کلاً از ReactJS اسفاده کنیم؟

البته که نه!
منظور این هست اگر در شروع یک پروژه نرم افزاری هستید React یا تکنولوژی هایی از این قبیل هم می توانید بهشون فکر کنید صرفا تکنولوژی های دات نت خیلی روی بحث امنیت قوی نیستند.!
مگه اینکه شرکت شما بتونه نرم افزاری تجاری به هم پیوسته ای تولید کنه که در back bone یک تیم فنی قوی و تحقیق وتوسعه داشته باشه که حتی با کرک کردن و یا مهندسی معکوس به بخشی از سورسها دسترسی پیدا کردن هم مطمئنا بدرد یک کرکر ساده ویا یک برنامه نویس ساده برای استفاده تجاری نخواهد خورد. مگه فقط برای ایده گرفتن و الگوبرداری در مهندسی یک نرم افزار...
در کل امنیت در زبانهایی که به یک زبان میانی مانند IL در سی شارپ ویا ByteCode در جاوا تفسیر میشوند از لحاظ مهندسی معکوس خیلی ضعیف هست. البته در دنیای امروز دیگه خیلی کسی نگران امنیت سورسها نیست با اینهمه پروژه متن باز اونهم به ین علت که در پروژه های تجاری که به قول معروف ستون های یک بازار هستند امکان رقابت برای یک تیمی که از چن برنامه نویس تازه کار تشکیل شده باشه عملا بعیده البته داخل کشور خودمون را عرض میکنم