آشنایی با روشهای قفلگذاری و نحوه طراحی آنها
محدودیت در تعداد کپی (Copy Limited)
استفاده از دیسکت، در هنگام برنامه (Required Disk)
آشنایی با نحوه قفلگذاری بر روی یک برنامه
ب: طراح (مجری پروژه) به سورس برنامه دسترسی ندارد. گاهی اوقات به یکسری برنامههای ارزشمندی برخورد میکنیم که فاقد قفل هستند، بنابراین نیاز به قفلگذاری وجود دارد (البته این حالت بیشتر در کشور ما و چند کشور دیگر که در آن ها قانون Copyright معنی ندارد، کاربرد دارد). جهت تزریق قفل به این گونه برنامهها، نیاز به آشنایی کامل به ساختار فایلهای اجرایی (EXEY, COM, SYS) وجود دارد چرا که باید برنامهای راطراحی کنیم تا همانند یک ویروس کامپیوتری به فایل اجرایی مشخصی بچسبد. البته جهت اینکار بهترین زبان برنامه نویسی، اسمبلی میباشد (بدلیل توانایی دخالت در روند اجرای برنامه). ضمناً برای بالا بردن سطح امنیت برنامه لازم است تا یکسری کدهای ضد دیباگ در برنامه گنجانده شوند.
کدهای ضد دیباگ، دستوراتی به زبان اسمبلی هستند که در حالت اجرای عادی برنامه، هیچ تغییری در روند اجرائی نمیگذارند بلکه در صورتی که برنامه توسط دیباگرها اجرا گردد (مورد ارزیابی قرار گیرد) بتواند از اجرای آن جلوگیری نماید. با اضافه کردن کدهای ضد دیباگ به ابتدای برنامه (یا قبل از کنترل قفل) میتوان احتمال دستکاری در برنامه را پایین آورد.
آشنایی با روشهای قفلگذاری و نحوه طراحی آنها
همانطور که میدانید، سیستم عامل جهت هر دیسکت یک شماره سریال واحد (UNIQUE) اختصاص میدهد، بطوریکه شماره سریال هر دو دیسکت با هم یکی نیستند. بنابراین همین خود یک راه تشخیص دیکست کلید (قفل) میباشد. جهت استفاده از این قفل میبایست شماره سریال دیسکت را خوانده و سپس در داخل برنامه آنرا کنترل نمائیم. یک راه ساده جهت خواندن شماره سریال، اجرای دستور VOL بصورت زیر است: VOL>> C:\DOS\LCK.TMP بعد با باز کردن فایل LCK.TMP، میتوانیم به محتویات آن دسترسی پیدا کنیم.
راه دیگر مراجعه به Boot Sector جهت کنترل قفل میباشد.
ضریب اطمینان این قفل در مورد دیسکت ها، دو تا پنج درصد بوده و در رابطه با هارد دیسک پنجاه تا شصت درصد میباشد. دلیل این اختلاف این است که در حالت قفل دیسکتی با کپی Boot Sector، قفل بر روی دیسکت دیگر قرار خواهد گرفت اما در رابطه با هارد دیسک اینکار به سادگی انجام پذیر نیست.
2- قفلگذاری با استفاده از مشخصات سیستم
در این نوع قفل نرم افزاری، برنامه قبل از اجرا ابتدا مشخصات سیستم را خوانده (که اینکار از طریق مراجعه به بخشهای خاصی از حافظه و یا مراجعه به اطلاعات BIOS انجام میشود). سپس آنرا با فایلی که قبلاً توسط نویسنده نرم افزار بر روی کامپیوتر کپی گردیده، مقایسه میکند و در صورت عدم برابری، اجرای برنامه پایان میپذیرد. این نوع قفل هنوز هم در بسیاری از برنامه ها استفاده میگردد، اما نکته قابل ذکر این است که جهت اطمینان بیشتر به قفل لازم است فایل حاوی مشخصات بصورت کد شده نوشته باشد تا امکان دستکاری آن توسط قفل شکنان به حداقل ممکن برسد. درصد اطمینان این نوع قفل 75%-65% میباشد.
3- قفل با استفاده از موقعیت فایل روی هارد دیسک
این نوع قفل فقط بر روی هارد دیسک قابل استفاده بوده و به این صورت است که فایل اجرایی به موقعیت خود بر روی هارد حساس میباشد چرا که قبل از اجرا ابتدا موقعیت خود را از روی سکتورهای ROOT خوانده و سپس شماره کلاستر اشاره گر به خودش را بدست میآورد، سپس آنرا با شماره کلاستری که قبلاً توسط برنامه نویس بر روی یکی از فایلهای برنامه (ممکن است بصورت کد شده باشد) قرار داده شده، مقایسه کرده و در صورت برابر بودن اجرا میشود. این نوع قفل نسبت به قفل قبلی (شماره 2) استفاده کمتری داشته چرا که در صورتیکه برنامه از روی بخشی از هارد به ناحیه دیگری انتقال یابد. اجرا نخواهد شد و این از نظر کاربر بسیار ناپسند میباشد (ضمناً امکان Scandisk، Defrag و... نیز وجود ندارد چرا که شماره کلاستر اشاره گر به فایل تغییر خواهد کرد). ضریب اطمینان این نوع قفل نیز 80%-70% میباشد.
4- قفل با استفاده از فرمت غیراستاندارد
این شیوه یکی از رایجترین قفلهای نرم افزاری است که هنوز هم بصورت جدی مورد استفاده قرار میگیرد. برخی از دلایل اهمیت آن عبارتند از:
- امکان استفاده از روشهای متفاوت در این روش – راحتی و سرعت زیاد به هنگام استفاده آن – عدم وجود نرم افزار خاصی جهت باز کردن این نوع از قفلها همان طور که میدانیم سیستم عامل جهت دسترسی به اطلاعات یک دیسکت از فرمت خاصی (18 سکتور در هر تراک) استفاده میکند اما اگر یک تراک به صورت غیر استاندارد فرمت شود، (مثلاً 19 سکتور در تراک) سیستم عامل دیگر توانایی استفاده از سکتورهای غیرمجاز را نخواهد داشت و بنابراین تمام نرم افزارهای تحت سیستم عامل مزبور نیز از سکتورهای مخفی استفاده نکرده، در نتیجه امکان کپی برداری از آنها بسیار ضعیف است. ما نیز از همین روش جهت طراحی قفل مورد نظرمان استفاده میکنیم. بصورتیکه تراک آخر دیسک را بصورت یک سکتوری و با شماره 20 فرمت میکنیم. سپس جهت کنترل دیسکت به سکتور فوق مراجعه کرده و در صورت وجود، کنترل برنامه را پی میگیریم. البته غیر از تغییر شماره سکتور میتوان از اندازه غیرمجاز نیز استفاده کرد یعنی بجای اینکه سکتورها را بصورت 512 بایتی فرمت کنیم، از اندازه 1024، 2048 و... استفاده میکنیم. این قفل فقط جهت فلاپی دیسک قابل استفاده میباشد و درصد اطمینان در این روش حدود 95%-85% میباشد.
معرفي سايت مرتبط با اين مقاله
تصاوير زيبا و مرتبط با اين مقاله