برنامه های امروزی و حفاظت از آنها
روزانه در سراسر دنیا برنامه های زیادی از طریق اینترنت در اختیار کاربران کامپیوتر قرار می گیرد و هر روز هم به تعداد این نرم افزارها اضافه می شود. اما بسیاری از این نرم افزارها خریدنی هستند و تنها نسخه هایی از آنها در اختیار کاربران قرار می گیرد که دارای محدودیت هستند. به عنوان مثال فقط ۱۵ روز کار می کنند و یا قابلیت Save (ذخیره سازی) ندارند. به این نوع برنامه ها که همراه با محدودیتی ارائه می شوند Trial یا Shareware گفته می شود.
در اختیار گذاشتن برنامه های Shareware برای کاربران به این دلیل است که کاربران بتوانند به صورت موقت از برنامه ها استفاده کنند و در صورت رضایت از برنامه، آنرا به صورت قانونی خریداری کنند.
وقتی یک کاربر نرم افزاری را خریداری می کند در واقع یک نسخه از این نرم افزار را به نام خود ثبت یا Register می کند.
محدودیت موجود در برنامه ها توسط برنامه نویسان در داخل برنامه ها قرار داده می شود. مثلا برنامه نویس در داخل برنامه یک شرط قرار می دهد : در صورتی که کاربر Serial (سریال) مربوط به برنامه را وارد نکند برنامه تا ۱۵ روز بیشتر کار نکند. در واقع برنامه نویس به نوعی از این طریق (یعنی قرار دادن محدودیت) برنامه خود را Protect (محافظت) می کند تا اشخاصی که برنامه را نخریده اند نتوانند به طور کامل و مداوم از آن استفاده کنند.
کاری که Cracker ها انجام میدهند عبور از این حفاظت یا Protection هست. به طوری که با عبور از این Protection می توان از برنامه بدون هیچ محدودیتی استفاده کرد و مانند کسی که برنامه را خریداری کرده از برنامه سود برد. بنابراین می توانیم Protrction را به صورت زیر معنا کنیم:
Protection یا حفاظت از برنامه مجموعه اعمالی ست که یک برنامه نویس برای جلوگیری از استفاده شدن از برنامه خود بدون Register کردن آن انجام می دهد.
Protection و Cracking
از آنجایی که برای تغییر در Protection موجود در یک برنامه ما سورس کد آنرا در اختیار نداریم بنابراین باید از علم Reverse Engineering کمک بگیریم تا بتوانیم به مراحل طراحی و کد نویسی Protection
توسط برنامه نویس پی ببریم.
آن چیزی که مهندسی معکوس را از Cracking متمایز می کند همین قسمت از کار است. مهندسی معکوس بیشتر جنبه علمی دارد و از آن برای تغییر در برنامه و خصوصا بخش حفاظتی آن استفاده نمی شود. این در حالیست که در Cracking ما فقط به فکر تغییر در حفاظت برنامه هستیم.
باید توجه داشت که راه های زیادی برای محافظت از برنامه ها موجود هست و ما سعی می کنیم تعدادی از این راه ها را بیان کنیم و به راه و روش های مقابله با این محافظت ها بپردازیم. ولی همیشه این شعار Cracker ها را به خاطر بسپارید:
هیچ برنامه ای نیست که کرک نشود.
و هیچ کرکری نیست که بتواند تمام برنامه ها را کرک کند.
انواع حفاظت
در اینجا به معرفی انوع حفاظت هایی که امروزه رواج دارد و بر روی اکثر برنامه های Shareware دیده می شود می پردازیم:
شماره سریال (Serial Number)
یکی از ساده ترین راه های حفاظت از نرم افزار می باشد. در این روش برای Register کردن برنامه باید یک شماره سریال وارد نماییم که این شماره سریال برای همه کاربران کامپیوتر و در همه کامپیوترها یکسان است. شماره سریال وارد شده توسط برنامه با شماره سریال اصلی طبق یک الگوریتم مقایسه می شود و در صورت صحیح بودن ، برنامه Register می شود.
شماره سریال و نام (Registration Code)
در این روش ما باید یک نام کاربری و یک شماره سریال وارد نماییم. شماره سریال واقعی از نام کاربری مشتق می شود و برای هر نام کاربری ، شماره سریال هایی معتبر خواهند بود که از نام کاربری (طی یک الگوریتم خاص) نتیجه گرفته شده باشد. در این روش با وارد کردن نام کاربری و سریال مربوط به آن در هر کامپیوتری می توان نرم افزار را Register کرد.
شماره سریال وابسته به سخت افزار (Node Locking)
در این نوع از حفاظت برای هر کامپیوتر تنها یک شماره سریال خاص در نظر گرفته می شود. به طوری که با یک شماره سریال نمی توان در کامپیوتر های مختلف برنامه را Register کرد. در این روش برنامه نویس شماره ی مربوط به یکی از سخت افزار های کامپیوتر شما را (مثل هارد یا مادربرد) که توسط کمپانی سازنده آن سخت افزار به آن اختصاص داده شده را به دست می آورد و شماره سریال برنامه را طبق آن شماره تهیه می کند.
Nag Screen
یکی از رایج ترین روش ها برای حفاظت از برنامه می باشد. در این روش هر بار که کاربر برنامه را اجرا می کند صفحه ای نمایش داده می شود تا به کاربر بگوید چند روز از مدت استفاده از برنامه باقی مانده و یا پیغام دیگری مبنی بر Register نبودن برنامه را نشان می دهد.
Time Trial
این نوع از حفاظت خود به چند دسته تقسیم می شود.
الف) محدود کردن نرم افزار در تعداد روزهایی که از آن استفاده می شود. مثلا نرم افزار ۳۰ روز بیشتر قابل استفاده نخواهد بود. شروع شمارش این روز ها از تاریخ نصب برنامه می باشد.
ب) پایان یافتن استفاده از نرم افزار در یک روز مشخص. در این روش برنامه در یک روز از پیش تعیین شده دیگر اجرا نخواهد شد و محدودیت استفاده از برنامه ربطی به زمان نصب آن ندارد.
ج) محدود کردن برنامه نسبت به مقدار دقایق یا ثانیه هایی که از آن استفاده شده است.
د) محدود کردن برنامه نسبت به تعداد دفعاتی که اجرا شده است
Dongle3
کرک کردن این نوع از حفاظت ها دشوار می باشد. در این روش یک قطعه ی سخت افزاری از طریق یکی از پورت های کامپیوتر (مثلا پورت LPT) به کامپیوتر شما وصل می شود. برنامه ای که این نوع از حفاظت بر روی آن اجرا شده ابتدا وجود این قطعه ی سخت افزاری را چک می کند. در صورتی که این قطعه سخت افزاری وجود داشته باشد برنامه روند عادی خود را پیش می گیرد و در غیر این صورت اجرا نخواهد شد. این نوع از حفاظت از نظر اقتصادی به صرفه نیست و تنها در نرم افزارهایی که ارزش مالی زیادی دارند استفاده می شود. Sentinel یک نوع از این حفاظت هاست که بسیار استفاده می شود.
حفاظت های از پیش تهیه شده و فروشی
بسیاری از برنامه نویسان وقت با ارزش خود را صرف نوشتن کد برای حفاظت از برنامه نمی کنند و ترجیح می دهند این وقت را صرف گسترش برنامه خود کنند. به همین علت از پروتکشن هایی استفاده می کنند که توسط بعضی از شرکت های امنیت نرم افزار تهیه شده. امروزه بعضی از شرکت های نرم افزاری به طور تخصصی بر روی نرم افزارهای امنیتی کار می کنند تا بتوانند از برنامه های دیگران حفاظت کنند. عبور از این نوع حفاظت ها بسیار سخت می باشد. چون به صورت حرفه ای برای جلوگیری از Cracking ساخته شده اند. اما معمولا ضعف هایی هم در بر دارند. اگر شخصی بتواند یکی از برنامه هایی را که با این نوع از Protection حفاظت می شود Crack نماید، می تواند تمامی برنامه های دیگری که با همین نوع از Protection حفاظت شده اند را هم Crack کند.
حفاظت های دیگر
تعداد زیادی از حفاظت های دیگری هم موجود هستند. مثل CD Rom Protection که بر روی سی دی ها اطلاعاتی را قرار می دهند که قابل خواندن نیست و به همین دلیل کپی از روی آن سخت است (ولی غیر ممکن نیست). یا غیر فعال سازی بعضی از امکانات برنامه مثل توانایی ذخیره سازی یا Save.