نقل قول نوشته شده توسط rahmatipoor مشاهده تاپیک
با تشکر
منظورم جلوگیری از کرک شدن و دی کامپایل سورس کدهای یک نرم افزارهای دسکتاپ هست
برای سخت تر کردن کرک کردن برنامه راه های زیادی وجود داره که قطعا نمیشه تو چند تا سطر بیان کرد.
مبحث امنیت در نرم افزار برای جلوگیری از کرک نشدن دوبخش داره یکی در هنگام نوشتن کدها هست که خوب تکنیک های زیادی هست که باید رعایت کنید البته یک بخشی هم مربوط به کامپایلر مورد استفاده شما هم میشود و بخش دوم مربوط به خروچی باینری گرفتن و محافظت از این باینری فایل واحیانا ملحقات همراه اون هست.
اول بخش دوم کمی به اختصار توضیح میدم عمری باقی بود الباقی تجربیات خودم را بیان خواهم کرد !
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 صفحه ای دارند.