قفل نرم‌افزاری

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

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

اجزای اصلی قفلهای نرم‌افزاری[ویرایش]

برنامه اصلی[ویرایش]

برنامه اصلی، برنامه‌ای است که می‌خواهیم بر روی آن قفل بگذاریم، این برنامه باید بگونه‌ای تغییر کند که بدون اجرای ماژول گارد اجرا نشود.در این ماژول زمانی که کلید پیدا شود آنگاه به برنامه اصلی اجازه اجرا داده می‌شود.

ماژول گارد[ویرایش]

قطعه کدی است که به برنامه اصلی اضافه می‌شود وبه آن اجازه اجرا می‌دهد.این اجازه تنها زمانی که کلید پیدا می‌شود صادر می‌گردد. ماژول گارد دو وظیفه اصلی دارد: الف) تشخیص کلید ب)تبدیل برنامه اصلی به یک فرم اجرایی که این عملیات باید کاملا دور از چشم کاربران و بصورت محرمانه انجام شود. دستکاری ماژول گارد باید کاملا غیر ممکن باشد، همچنین باید با مخفی سازی رمزگذاری واستفاده از تله گذاری دی باگ بطور کامل نگهداری شود.(تله دی باگ قطعه کدی است که به ماژول گارد اضافه می‌شود ودر صورت تغییر ماژول از اجرا برنامه اصلی جلوگیری می‌کند).

کلید فیزیکی[ویرایش]

یک قطعه فیزیکی و یا یک خصوصیت ویژه که بطور مصنوعی برای برنامه ساخته شده‌است. این کلید به اشکال گوناگونی می‌باشد مانند: cd,disket,hard disk,dongle(دانگل یک قطعه سخت‌افزاری است که معمولاً بر روی پورت پرینتر نصب می‌شود)، کارتهای هوشمند و یا مشخصات شخصی مانند اثر انگشت، صدا و یا تصویر مردمک.

آشنایی با روش‌های قفل گذاری و نحوه طراحی آن‌ها[ویرایش]

قفل گذاری با استفاده از شماره سریال اصلی دیسکت[ویرایش]

همانطور که می‌دانید، سیستم‌عامل جهت هر دیسکت یک شماره سریال واحد (UNIQUE) اختصاص می‌دهد، بطوریکه شماره سریال هر دو دیسکت با هم یکی نیستند. بنابراین همین خود یک راه تشخیص دیسکت کلید (قفل) می‌باشد. جهت استفاده از این قفل می‌بایست شماره سریال دیسکت را خوانده و سپس در داخل برنامه آن را کنترل نمائیم. یک راه ساده جهت خواندن شماره سریال، اجرای دستور VOL بصورت شکل زیر است:

VOL >>C:DOSLCK.TMP

بعد با باز کردن فایل LCK.TMP می‌توانیم به محتویات آن دسترسی پیدا کنیم. راه دیگر مراجعه به Boot]] [[Sector جهت کنترل قفل می‌باشد.

ضریب اطمینان این قفل در مورد دیسکت‌ها ۵٪-۲٪ بوده و در رابطه با هارد دیسک ۶۰٪-۵۰٪ می‌باشد. دلیل این اختلاف این است که در حالت قفل دیسکتی، با عمل کپی Boot Sector، قفل بر روی دیسکت دیگر قرار خواهد گرفت اما در رابطه با هارد دیسک اینکار به سادگی انجام پذیر نیست.

قفل گذاری با استفاده از مشخصات سیستم[ویرایش]

در این نوع قفل نرم‌افزاری، برنامه قبل از اجرا ابتدا مشخصات سیستم را خوانده (که اینکار از طریق مراجعه به بخش‌های خاصی از حافظه و یا مراجعه به اطلاعات بایوس انجام می‌شود.) سپس آن را با فایلی که قبلا توسط نویسنده نرم‌افزار بر روی کامپیوتر کپی گردیده، مقایسه می‌کند و در صورت عدم برابری، اجرای برنامه پایان می‌پذیرد.

این نوع قفل هنوز هم در بسیاری از برنامه‌ها استفاده می‌گردد، اما نکته قابل ذکر این است که جهت اطمینان بیشتر به قفل، لازم است فایل حاوی مشخصات بصورت کد شده نوشته شده باشد تا امکان دستکاری آن توسط قفل شکنان به حداقل ممکن برسد. درصد اطمینان این نوع قفل ۷۵٪-۶۵٪ می‌باشد.

قفل با استفاده از موقعیت فایل روی هارد دیسک[ویرایش]

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

این نوع قفل نسبت به قفل قبلی (شماره ۲) استفاده کمتری دارد، چون در صورتی که برنامه از روی بخشی از هارد به ناحیه دیگری انتقال یابد، اجرا نخواهد شد و این از نظر کاربر بسیار ناپسند می‌باشد. (ضمنا امکان Defra, Scandisk، و ... نیز وجود ندارد چرا که شماره کلاستر اشاره گر به فایل تغییر خواهد کرد.) ضریب اطمینان این نوع قفل نیز ۸۰٪-۷۰٪ می‌باشد.

قفل با استفاده از فرمت غیر استاندارد[ویرایش]

این شیوه یکی از رایج‌ترین قفل‌های نرم‌افزاری است که هنوز هم بصورت جدی مورد استفاده قرار می‌گیرد. برخی از دلایل اهمیت آن عبارتند از: - امکان استفاده از روش‌های متفاوت در این روش - راحتی و سرعت زیاد به هنگام استفاده از آن - وجود ضریب اطمینان بالا و انعطاف پذیری زیاد آن - عدم وجود نرم‌افزار خاصی جهت باز کردن این نوع از قفل‌ها

همان طور که می‌دانید سیستم‌عامل جهت دسترسی به اطلاعات یک دیسکت از فرمت خاصی (۱۸ سکتور در هر تراک) استفاده می‌کند، اما اگر یه تراک به صورت غیر استاندارد فرمت شود، (مثلا ۱۹ سکتور در تراک) سیستم‌عامل دیگر توانایی استفاده از سکتورهای غیرمجاز را نخواهد داشت (برای مطالعه بیشتر دراین مورد به سایر مقالات سایت میکرو رایانه مراجعه نمایید) و بنابراین تمام نرم‌افزارهای تحت سیستم‌عامل مزبور نیز از سکتورهای مخفی استفاده نکرده، در نتیجه امکان کپی برداری از آنها بسیار ضعیف است.

استفاده از این روش اینگونه است که تراک آخر دیسک را مثلا به صورت یک سکتوری و با شماره ۲۰ فرمت کنید. سپس جهت کنترل دیسکت به سکتور فوق مراجعه کرده و در صورت وجود آن کنترل و اجرای برنامه را پی بگیرد.

البته غیر از تغییر شماره سکتور می‌توان از اندازه غیر مجاز نیز استفاده کرد، یعنی بجای اینکه سکتورها را بصورت ۵۱۲ بایتی فرمت کنیم، از اندازه ۱۰۲۴, ۲۰۴۸ و ... استفاده کنیم. ( قفل نرم‌افزاری Copy Control که معروفترین در نوع خود می‌باشد، از همین روش استفاده می‌کند.) این قفل فقط جهت فلاپی دیسک قابل استفاده می‌باشد و در صد اطمینان در این روش حدود ۹۵٪-۸۵٪ می‌باشد.

قفل با استفاده از شماره سریال ساختگی[ویرایش]

این روش قفل گذاری که قویترین قفل می‌باشد، بصورت مخلوطی از روش‌های ۱ و ۴ می‌باشد. یعنی ابتدا تراک خاصی را بصورت غیر استاندرد فرمت کرده و سپس اطلاعات خاصی را درون آن قرار می‌دهند (شماره سریال فرضی). این قفل فقط جهت فلاپی دیسک قابل استفاده بوده و ضریب اطمینان آن حدود ۹۸٪-۹۰٪ می‌باشد.

آشنایی با روتین‌های ضد دیباگ Anti Debug Procedures

همان طوری که توضیح داده شد، روتین‌های ضد دیباگ جهت جلوگیری از اجرای برنامه‌های دیباگر و یا حداقل جهت مشکل تر کردن کار دستکاری قفل توسط قفل شکنان، استفاده می‌شود. در زیر چند روش به عنوان مثال آورده شده‌است:

الف: غیر فعال کردن وقفه‌ها جهت جلوگیری از اجرای مرحله به مرحله ( Trace کردن ) برنامه می‌توان وقفه‌های کنترلر ۸۳۵۹ را غیر فعال ساخت.(در مورد وقفه‌ها بحث‌های نسبتا مفصل و کاملی در سایت میکرو رایانه انجام شده برای مطالعه بیشتر دراین مورد به سایر مقالات سایت میکرو رایانه مراجعه نمایید) آدرس این کنترلر ۲۱h بوده و IRQ‌های ۷-۰ را کنترل می‌کند IRQ۱ همان وقفه مربوط به صفحه کلید می‌باشد. پس با غیر فعال کردن این وقفه می‌توان صفحه کلید را غیر فعال نمود. طریقه استفاده:

CS:۰۱۰۰ E421 IN AL,21 CS:۰۱۰۲ ۰C02 OR AL,02 CS:۰۱۰۴ E621 OUT 21,AL

ب: تغییر بردار وقفه‌ها

یکی از روش‌های ساده و راحت جهت ضد دیباگ کردن برنامه‌ها تغییر برداری است که دیباگر از آن استفاده می‌کند. (۰۳ ) حتماً بخاطر بسپارید که در پایان برنامه دوباره آدرس بردار وقفه تغییر داده شده را بازیابی کنید. طریقه استفاده:

CS:۰۱۰۰ EB04 JMP 0106 CS:۰۱۰۲ ۰۰۰۰ ADD [BX+SI],AL CS:۰۱۰۴ ۰۰۰۰ ADD [BX+SI],AL CS:۰۱۰۶ ۳۱C0 XOR AX,AX CS:۰۱۰۸ ۸EC0 MOV ES,AX CS:۰۱۰A 268B1E0C00 MOV BX,ES:[۰۰۰C] CS:۰۱۰F 891E0201 MOV [۰۱۰۲],BX CS:۰۱۱۳ ۲۶۸B1E0E00 MOV BX,ES:[۰۰۰E] CS:۰۱۱۸ ۸۹۱E0401 MOV [۰۱۰۴],BX CS:۰۱۱C 26C7064C000000 MOV Word Ptr ES:[۰۰۰C],۰۰۰۰ CS:۰۱۲۳ ۲۶C7064E000000 MOV Word Ptr ES:[۰۰۰E],۰۰۰۰

ج: گیج کردن دیباگر

این راه یکی از قویترین تکنیک‌های ضد دیباگ بوده که در آن به وسط یک دستور، پرش می‌شود و اینکار باعث قفل کردن (Hang) دیباگر خواهد شد. طریقه استفاده:

CS:۰۱۰۰ E421 IN AL,21 CS:۰۱۰۲ B0FF MOV AL,FF CS:۰۱۰۴ EB02 JMP 0108 CS:۰۱۰۶ C606E62100 MOV Byte Ptr [۲۱E۶],۰۰ CS:۰۱۰B CD20 INT ۲۰

د: کنترل پرچم‌های CPU

این روش در برابر دیباگرها بسیار مفید می‌باشد و به این صورت است که ابتدا پرچم Trace از CPU را خاموش کرده و در بین برنامه آنرا کنترل کنیم. در صورتی که این پرچم روشن شده باشد، مشخص است که دیباگر در پشت صحنه در حال اجراست. طریقه استفاده:

CS:۰۱۰۰ ۹C PUSHF CS:۰۱۰۱ ۵۸ POP AX CS:۰۱۰۲ ۲۵FFFE AND AX,FEFF CS:۰۱۰۵ ۵۰ PUSH AX CS:۰۱۰۶ ۹D POPF

و در بین برنامه از دستورات ذیل استفاده کنید:

CS:۱۵۲۳ ۹C PUSHF CS:۱۵۲۴ ۵۸ POP AX CS:۱۵۲۵ ۲۵۰۰۰۱ AND AX,0100 CS:۱۵۲۸ ۷۴۰۲ JZ 152C CS:۱۵۲A CD20 INT ۲۰

ه: متوقف ساختن دیباگر

این روش باعث متوقف شدن دیباگر می‌شود که با اجرای دستور ساده INT ۰۳ می‌توان این کار را انجام داد. طریقه استفاده:

CS:۰۱۰۰ B96402 MOV CX,0264 CS:۰۱۰۳ BE1001 MOV SI,0110 CS:۰۱۰۶ AC LODSB CS:۰۱۰۷ CC INT 3 CS:۰۱۰۸ ۹۸ CBW CS:۰۱۰۹ ۰۱C3 ADD BX,AX CS:۰۱۰B E2F9 LOOP ۰۱۰۶

روش‌های کد کردن اطلاعات Data Coding Procedures[ویرایش]

الف: افزودن یک عدد به کدهای یک فایل[ویرایش]

در این روش جهت کد کردن یک فایل، ابتدا آن را خوانده و سپس یک مقدار خاص، مثلا ۲۰ را به مقدار هر بایت فایل اضافه می‌کنیم. این یکی از ساده‌ترین روش‌ها بوده و نسبتا کارایی خوبی نیز دارد. جهت خارج کردن فایل از حالت کد شده (Decode) نیز، کافیست مقدار فوق را از تمام بایت‌های فایل کم کنیم.

ب: XOR کردن کل فایل[ویرایش]

در این روش نیز پس از خواندن کل فایل، تمام بایت‌های آن را با رشته کاراکتری یا عدد ثابت خاصی یای مانعةالجمع کرده و سپس مقدار جدید را در فایل حاصل ضبط می‌نمائیم. جهت خارج کردن فایل از حالت کد شده، دقیقا عکس آن را انجام می‌دهیم.



بررسی چند روش قفل گذاری رایج در بازار[ویرایش]

Safe Disk[ویرایش]

این قفل که توسط شرکت C-Dilla ارائه شده که شامل سه روش اصلی در قفل گذاری می‌باشد. الف) یک امضای دیجیتالی که به عنوان کلید مورد استفاده قرار می‌گیرد و در هنگام کپی توسط نرم‌افزارهای کپی دیسک فشرده، کپی نمی‌شود. ب)عملیات مخفی سازی ج) استفاده از تله‌های دیباگ برای جلوگیری از دستکاری کد برنامه این دیسک‌های فشرده شامل یک ساختار درست‌شناسی می‌باشند، هنگامی که دیسک فشرده اصلی داخل درایور قرار می‌گیرد، ساختار درست شناسی، امضای دیجیتالی را چک می‌کند و در صورت موفقیت به برنامه اجازه بالا آمدن و اجرا می‌دهد. این قفل در دو نسخه مختلف ارائه شده که هر دو از لحاظ ساختار کاملا شبیه به هم هستند و تنها تفاوت آنها در فایلهایی است که بر روی دیسک فشرده ایجاد می‌کنند. در نسخه یک، فایلهایی با نام‌های ۰۰۰۰۰۰.tmp، Clocksp.exe ، Clcd32.Dll و فایلهای با پسوند Icd وجود دارد. این دیسک‌های فشرده در حدود ۱۰۰۰۰ سکتور غیر قابل خواندن دارد که معمولاً از سکتور ۸۰۰ شروع می‌شوند. در نسخه دو دیگر فایلهای با پسوند Icd وجود ندارد، ماژول گارد نیز مستقیما به داخل برنامه اصلی منتقل شده ولی بقیه فایها موجودند. در این نسخه نیز در حدود ۱۰۰۰۰ سکتور غیرقابل خواندن وجود دارد. این قفل‌ها توسط دیسک درایو با توانایی خواندن و نوشتن در حالتRAW قابل کپی هستند.

Secu Rom[ویرایش]

این قفل که توسط شرکت سونی به بازار عرضه شده‌است، بیشترین طرفدار را در بین شرکت‌های تولیدکننده دیسک فشرده دارد. در این قفل از دو متد برای قفل گذاری استفاده شده‌است. الف) استفاده از یک اثر انگشت الکترونیکی که برای هر دیسک فشرده متفاوت است و در قسمت Subchannel ذخیره می‌شود ب)تکنولوژی مخفی سازی SecuRom بر خلاف SafeDisk شامل سکتورهای غیر قابل خواندن نیست. این دیسک‌های فشرده در اکثر مواقع شامل فایهایی با نام‌های CMS_95dll ، CMS16.dll و CMS_NT.dll می‌باشند. البته دیسک‌های فشرده‌ای با این قفل وجود دارند که این فایلها را شامل نمی‌شوند. در بنیان دیسک‌های فشرده‌ای که از قفل SecuRom استفاده می‌کنند شامل علامت اختصاری DADC روی سطح دیسک فشرده می‌باشند. میزان امنیت این قفلها متوسط بوده و معمولاً توسط دیسک فشرده درایوهای با توانایی خواندن و نوشتن Subchannel‌ها، قابل کپی هستند.

LaserLock[ویرایش]

شرکت MLSlaserlock International این قفل را برای جلوگیری از کپی غیر مجاز دیسک‌های فشرده به بازار ارائه کرد. این قفل از ترکیب پنهان سازی و علامت لیزری بر روی دیسک فشرده استفاده می‌کند. این علامت گذاری که در آن یک سری داده خراب و غیر قابل کپی به دیسک فشرده اضافه می‌شود، هنگام صیقلی کردن دیسک فشرده انجام می‌شود. این دیسک فشرده شامل یک پوشه مخفی با نام Laserlock در ریشه اصلی می‌باشد، این پوشه خود شامل فایلهای غیر قابل کپی با نامهای Laserlok.o۱۰ ، Laserlok.o۱۱ و Laserlok.in می‌باشد.علاوه بر آن یک نوار دایره‌ای شکل که شامل این سکتورهای خراب می‌باشد در روی سطح دیسک فشرده قابل مشاهده‌است. این دیسک‌های فشرده توسط دیسک فشرده درایوهای با توانایی تشخیص و پرش از روی سکتورهای غیر قابل خواندن (Intelligent Bad Scanner.Fast Skip Error) قابل کپی هستند، البته زمان زیادی برای ایجاد کپی لازم است.

Libcrypt Protection[ویرایش]

این قفل که توسط شرکت Sony ارائه شده‌است، کاملا شبیه SecuRom است، یک کد شناسائی مخصوص را در قسمت SubChannel ذخیره می‌کند، با این تفاوت که Libcrypt تمام ۹۶ بایت مربوط به SubChannel را برای پیدا کردن کد شناسایی استفاده می‌کند در حالی که SecuRom فقط ۱۶ بایت مربوط به Q-SubChannel را احتیاج دارد. هیچ روشی برای شناسایی این قفل وجود ندارد. این قفل از نظر میزان امنیت در رده قفلهای خوب می‌باشد و فقط توسط دیسک درایوهای با توانایی عدم ترمیم (Don’t Repair Subchannel)SubChannel قابل کپی است.

CD Cops[ویرایش]

توسط شرکت Link Data Securty عرضه شد. این قفل همانند یک پوسته امنیتی است که به برنامه اصلی اضافه می‌شود. در این متد هر دیسک فشرده دارای یک اثر انگشت منحصر به فرد است که توسط تمام دیسک خوانها قابل خواندن است ولی فقط توسط دستگاه خاصی قابل تکثیر است. این اثر انگشت بدین صورت است که هنگام ساخت، یک نرم‌افزار ساختار دیسک‌های فشرده را چک می‌کند و با توجه به آن یک کد ۸ رقمی تولید می‌کند.این کد برای دیسک‌های فشرده‌ای که به طور مشابه ساخته شده‌اند، یکسان است. این کد هشت رقمی هنگام نصب برنامه، بر روی سیستم نصب می‌شود و از آن پس برنامه هنگامی اجرا می‌شود که دیسک فشرده اصل در درایو باشد وگرنه اجرا نمی‌شود. روش شناسایی این دیسک‌های فشرده به اینگونه‌است که شاخه اصلی شامل فایل CDCOPS.dll و فایلهایی با پسوندW_xوGz می‌باشد. میزان امنیت این قفلها بسیار بالا بوده و به طور معمول کپی این دیسک‌های فشرده غیر ممکن است.

DiseGuard[ویرایش]

یک تکنولوژی قفل گذاری است که توسط شرکت TTR Technologyinc ارائه شده‌است. در این متد، یک کد دیجیتالی خاص بر روی دیسک فشرده ثبت می‌شود. این کد دیجیتالی که هنگام ساخت دیسک فشرده به آن اضافه می‌گردد، غیر قابل کپی است. هنگامی که از یک دیسک فشرده اصلی استفاده می‌شود این امضا ظاهر شده و این باعث آشکار سازی(Decryption) برنامه‌های اجرایی و اجرای آنها می‌شود. اما بر روی دیسک‌های فشرده کپی این امضا ظاهر نشده و در نتیجه برنامه اجرایی موفق به اجرا نمی‌شود در اینگونه موارد یک پیغام مبنی بر کپی غیر قانونی ظاهر می‌شود و یا نسخه نمایشی نرم‌افزار اجرا می‌شود. این دیسک‌های فشرده شامل فایلهای Loslink.Sys, Loslink.Vxd در شاخه Setup برنامه می‌باشد. درجه امنیت این قفل بسیار بالا بوده و به طور معمول غیر قابل کپی است.

Protect CD[ویرایش]

این قفل که بیشتر برای دیسک‌های فشرده بازی(game) مورد استفاده قرار می‌گیرد، بر روی داده‌ها هیچ تغییری اعمال نمی‌کند. اما یکسری داده‌ها خاص بر روی قسمتهایی از دیسک فشرده(SubChannel) قرار می‌دهد که فقط توسط سرویسهای آشکار سازی خودش قابل دستیابی است. برای شناسایی این قفل اگر فایل اجرایی اصلی را با یک Hex Editor باز کنید حروف VOB در داخل آن قابل مشاهده‌است. این دیسک‌های فشرده، توسط دیسک فشرده درایوهایی که توانایی خواندن ونوشتن در حالت RAW و همچنین توانایی خواندن ونوشتن کانالهای فرعی(SubChannel) را دارند قابل کپی هستند.

PhenoProtect[ویرایش]

در این متد که توسط شرکت Codecult به بازار عرضه شد، ابتدا یکسری داده‌های خراب در قسمتهای مختلف دیسک فشرده ایجاد می‌شود. ماژول گارد هنگام اجرا داده‌های خراب را چک می‌کند در صورت مطابقت به برنامه اجازه اجرا می‌دهد. این قفل از نظر امنیتی در رده قفلهای ضعیف قرار دارد، دیسک‌های فشرده‌ای که با این روش قفل گذاری شده‌اند می‌توانند توسط دیسک فشرده درایوهایی که توانایی تشخیص و پرش از روی سکتوری‌های غیر قابل خواندن(Intelligent Bad Sector Scaner; Fast Error Skip) را دارند، براحتی کپی شوند.

CrypKey[ویرایش]

در این متد قفل گذاری که از سیستم کنترل زمان استفاده می‌کند، احتیاج به هیچ گونه کلیدی نیست. بدین ترتیب که فقط یک ماژول به نرم‌افزار اصلی اضافه می‌شود، هنگام نصب، این ماژول با توجه به مشخصات سیستمی از جمله شماره سریال دیسکها، یک کد تولید می‌کند. این کد تولید شده وابسته به خصوصیات ماشین است بنابراین بر روی هر سیستمی متفاوت است پس از ارائه کد، یک کد همسنگ آن را کاربر در خواست می‌کند. کاربر با ارائه کد تولید شده به شرکت تولید کننده، کد معادل را دریافت می‌کند. این کد یا از طریق تلفن یا از طریق پست الکترونیک دریافت می‌شود. در صورتیکه کد همسنگ دریافت شده پس از کد شدن معادل کد ارائه شده باشد یا به عبارتی دیگر کد ارائه شده از طرف کامپیوتر، مکمل کد دریافت شده از شرکت باشد برنامه اجزا اجرا می‌یابد. کاربر می‌تواند بارها از این کد استفاده کند. پس از ورود کد، این کد در مکانی از سیستم مثلا ریجستری یا یک فایل به صورت کد شده قرار می‌گیرد و هر بار کامپیوتر برنامه را اجرا می‌کند به جای در خواست کد از کاربر، کد را از ریجستری یا فایل مورد نظر پس از کدیابی بکار می‌برد.باتوجه به استفاده روز افزون از این قفلها به بررسی نقاط ویژگی‌ها وکاستی‌های این قفل‌ها می‌پردازیم

کاستی ها الف) این قفلها نیاز به دریافت کد از شرکت دارند یعنی اینکه کاربر حتماً باید به شکلی با شرکت تولید کننده تماس بگیرد. و نمی‌تواند برنامه را پس از خرید بلافاصله استفاده کند. ب) برای هر سیستم یک کد یکتا ارائه می‌شود و در صورت استفاده از چند سیستم باید برای دریافت هر کد جداگانه اقدام کرد ج) این کدها ممکن است با فرمت کردن و یا پارتیشن بندی تغییر یابند. د) در صورت تغییر یا تعویض قطعه‌ای از قطعات سخت‌افزاری، برنامه تصور می‌کند که سیستم تغییر یافته و دیگر اجرا نمی‌شود.

ویژگیها الف)از امنیت بالایی برخوردارند ب)توانایی آمارگیری فروش برنامه توسط شرکت تولید کننده


Illegal Toc[ویرایش]

از این متد بیشتر برای پیشگیری کاربران از کپی دیسکهای فشرده بازی خصوصا دیسک‌های فشردهٔ دستگاه Play Station استفاده می‌شود. این متد با دادن داده‌ها غلط درباره سایز فایلها کار می‌کند. دیسک فشرده یک جدول مشخصات دارد که در مورد سایز فایلها موقعیت واسم هر فایل روی دیسک فشرده اطلاعاتی در خود نگه می‌دارد.هنگامی که شرکتهای نرم‌افزاری یک دیسک فشرده را تهیه می‌کنند، می‌توانند اندازه فایلها را بطور دستی تغییر دهند این کار باعث می‌شود تا در زمان کپی، پیغامی مبنی بر بزرگ بودن اندازه دیسک فشرده و عدم امکان کپی توسط برنامه کپی صادر شود. روش شناسایی این متد بدین صورت است که به علت حجم بیش از اندازه فایها، ظرفیت دیسک فشرده، در حدود چند گیگا بایت می‌باشد. این متد از دید امنیتی، در حد متوسط می‌باشد و توسط برنامه‌های کپی دیسک فشرده که امکان نادیده گرفتن جدول مشخصات نادرست Ignore Illegal Toc را داشته باشند قابل کپی هستند.

OverBurn/Oversize[ویرایش]

این متد قفل گذاری بر روی داده‌ها هیچ تغییری اعمال نمی‌کند. در این متد یکسری داده اضافی به دیسک فشرده اضافه می‌شود به طوریکه محتویات دیسک فشرده از مقدار استاندارد، فضای بیشتری اشغال کند. برای مثل قرار دادن ۷۰۵ MB داده‌ها در یک دیسک فشرده با ظرفیت ۷۰۰ MB، اکثر دیسک درایوها توانایی خواندن و نوشتن این قسمت اضافی را ندارند و هنگام کپی دچار خرابی می‌شوند. روش شناسایی به این صورت است که محتویات دیسک فشرده کمی بیشتر از حد استاندارد دیسک فشرده، ظرفیت دارند. درجه امنیت این متد در حد ضعیف است. این روش قفل گذاری تا هنگامیکه دیسک‌های فشرده با ظرفیت بالا به بازار عرضه نشده بود، روش موفق بود.


منابع[ویرایش]

  • طراحی و پیاده سازی قفل‌های نرم‌افزاری، آرش آبیار، پایان نامه ۱۳۸۷ شهریور، دانشگاه صنعتی مازندران
  • «میکرو رایانه». مقاله آشنایی با قفل‌های نرم‌افزاری.