تبليغاتX
وب سایتی برای همه.. www.aref2760.com

حضرت فاطمه زهرا سلام الله عل?ها : آن لحظه اي كه زن در خانه خود مي ماند ، ( و به امور زندگي و تربيت فرزند مي پردازد ) به خدا نزديك تر است  

 

-

قفل هاي نرم افزاري چگونه طراحي مي شوند؟

   

تعريف قفل هاي نرم افزاري: به هر برنامه اي كه كنترل كپي آن فقط از طريق نرم افزار و بدون نياز به سخت افزار اضافي قابل انجام باشد, گويند.
تعريف قفل هاي سخت افزاري: به هر برنامه اي كه كنترل كپي آن از طريق سخت افزار اضافي قابل انجام باشد, گويند.
با توجه به تعاريف فوق مي توان به تفاوت قفل هاي سخت افزاري و نرم افزاري پي برد. قفل هاي سخت افزاري با توجه به اضافه كردن يك سخت افزار جديد به كامپيوتر ( اغلب از طريق ارتباط با پورت چاپگر ) برنامه خود را كنترل مي كنند. برنامه قبل از اجرا ابتدا با توجه به مراجعه به آدرس سخت افزار نصب شده ( اضافه شده با استفاده از دستور Port ) به سخت افزار مورد نظر خود مراجعه كرده و در صورت يافتن آن, تست هاي مختلف اعم از تست رمز, خواندن اطلاعات و ... مي تواند تصميم گيري نمايد. اما در قفل هاي نرم افزاري برنامه بدون نياز به سخت افزار اضافي و با كنترل رسانه ذخيره سازي مي تواند تصميم گيري كند. ضمنا لازم به توضيح است كه هدف از طراحي قفل هاي نرم افزاري/ سخت افزاري اين نيست كه هيچكس توانايي شكستن ( باز كردن ) آنرا ندارد بلكه مقصود بالا بردن سطح كنترل كپي هاي غير مجاز تا حد ممكن مي باشد. ( چرا كه مي دانيم اطلاعات همه در يك سطح نيست. )

طريقه استفاده از قفل نرم افزاري در برنامه مورد نظر
با توجه به نوع كاربرد برنامه ( كوچك وقابل كپي بر روي يك ديسكت, تحت شبكه و ... ) مي توانيم از انواع روش هايي كه جهت حفاظت از نرم افزار در نظر داريم ( و متعاقبا توضيح داده خواهد شد ) استفاده كنيم. اما مساله قابل بحث اين است كه چگونه از يك قفل منتخب استفاده نمائيم؟
جواب اين سوال متغيير و وابسته به شرايط زير مي باشد:
الف: اعتقاد طراح نرم افزار به اينكه كاربر حتما بايد آنرا خريداري نمايد تا از امكانات آن مطلع گردد.
در اين حالت قفل نرم افزاري در ابتداي شروع به كار برنامه كنترل مي گردد حتي طراح مي تواند در مواقع حساس نيز قفل را مجددا كنترل كند و يا در حالتي كه طراح واقعا سخت گير باشد, مي تواند در زمان هاي مشخصي از وجود قفل اطمينان حاصل نمايد ( مثلا هر 4 ثانيه ). البته در اين حالت طراح بايد روشي را كه جهت كنترل قفل استفاده مي كند, نيز در نظر بگيرد.
ب: اعتقاد طراح نرم افزار به اين كه كاربر مي تواند از نرم افزار به عنوان نسخه نمايشي نيز استفاده كند.
طراح در اين حالت مي بايست در مكان هاي خاصي از برنامه, قفل را كنترل كند. مثلا در يك برنامه حسابداري مي توان تمام بخش هاي سيستم را آزاد گذاشته ( يعني برنامه نيازي به قفل نداشته باشد ) اما در صورتي كه كاربر مايل به استفاده از امكانات گزارشگيري سيستم باشد, قفل نرم افزاري در خواست گردد. مزيت اين روش بر روش قبلي اين است كه ديگر نياز به طراحي نسخه نمايشي جهت مشاهده كاربران وجود ندارد.

آشنايي با نحوه قفل گذاري بر روي يك برنامه
الف: طراح به سورس برنامه دسترسي دارد.
در اين حالت طراح پس از انتخاب روش قفل گذاري, كافيست آنرا به زبان مورد نظر خود پياده سازي نموده و در برنامه خود بگنجاند. ( كه مكان هاي قرار دادن قفل در عنوان قبلي توضيح داده شد. )
ب: طراح ( مجري پروژه ) به سورس برنامه دسترسي ندارد.
گاهي اوقات به يكسري برنامه هاي ارزشمندي برخورد مي كنيم كه فاقد قفل هستند, بنابراين نياز به قفل گذاري وجود دارد. ( البته اين حالت بيشتر در كشور ما و چند كشور ديگر كه در آن ها قانون Copyright معني ندارد, كاربرد دارد. ) جهت تزريق قفل به اين گونه برنامه ها, نياز به آشنايي كامل به ساختار فايل هاي اجرايي (EXE, COM, SYS, …) وجود دارد چرا كه بايد برنامه اي طراحي كنيم تا همانند يك ويروس كامپيوتري به فايل اجرايي مشخصي بچسبد. البته جهت اينكار بهترين زبان برنامه نويسي, اسمبلي مي باشد. ( بدليل توانايي دخالت در روند اجراي برنامه )
البته در رابطه با نحوه نوشتن اين گونه برنامه ها, روش هاي زيادي وجود دارد كه خود بحثي مجزا را مي طلبد و از حوصله اين مقاله خارج است.
ضمنا براي بالا بردن سطح امنيت برنامه لازم است تا يكسري كد هاي ضد ديباگ در برنامه گنجانده شوند. كدهاي ضد ديباگ, دستوراتي به زبان اسمبلي هستند كه در حالت اجراي عادي برنامه, هيچ تغييري در روند اجراي نمي گذارند بلكه در صورتي كه برنامه توسط ديباگرها اجرا گردد ( مورد ارزيابي قرار گيرد ) بتواند از اجراي آن جلوگيري نمايد. با اضافه كردن كد هاي ضد ديباگ به ابتداي برنامه ( يا قبل از كنترل قفل ) مي توان احتمال دستكاري در برنامه را پائين آورد. ( نحوه نوشتن كد هاي ضد ديباگ در پيوست A آورده شده است.)

آشنايي با روش هاي قفل گذاري و نحوه طراحي آن ها

1- قفل گذاري با استفاده از شماره سريال اصلي ديسكت
همانطور كه مي دانيد, سيستم عامل جهت هر ديسكت يك شماره سريال واحد (UNIQUE) اختصاص مي دهد, بطوريكه شماره سريال هر دو ديسكت با هم يكي نيستند. بنابراين همين خود يك راه تشخيص ديسكت كليد ( قفل ) مي باشد.
جهت استفاده از اين قفل مي بايست شماره سريال ديسكت را خوانده و سپس در داخل برنامه آنرا كنترل نمائيم. يك راه ساده جهت خواندن شماره سريال, اجراي دستور VOL بصورت شكل مقابل است:
VOL >>C:\DOS\LCK.TMP
بعد با باز كردن فايل LCK.TMP, مي توانيم به محتويات آن دسترسي پيدا كنيم. راه ديگر مراجعه به Boot Sector جهت كنترل قفل مي باشد.
ضريب اطمينان اين قفل در مورد ديسكت ها, 5%-2% بوده و در رابطه با هارد ديسك 60%-50% مي باشد. دليل اين اختلاف اين است كه در حالت قفل ديسكتي با كپي Boot Sector, قفل بر روي ديسكت ديگر قرار خواهد گرفت اما در رابطه با هارد ديسك اينكار به سادگي انجام پذير نيست.

2- قفل گذاري با استفاده از مشخصات سيستم
در اين نوع قفل نرم افزاري, برنامه قبل از اجرا ابتدا مشخصات سيستم را خوانده ( كه اينكار از طريق مراجعه به بخش هاي خاصي از حافظه و يا مراجعه به اطلاعات BIOS انجام مي شود. ) سپس آنرا با فايلي كه قبلا توسط نويسنده نرم افزار بر روي كامپيوتر كپي گرديده, مقايسه مي كند و در صورت عدم برابري, اجراي برنامه پايان مي پذيرد.
اين نوع قفل هنوز هم در بسياري از برنامه ها استفاده مي گردد, اما نكته قابل ذكر اين است كه جهت اطمينان بيشتر به قفل لازم است فايل حاوي مشخصات بصورت كد شده نوشته شده باشد تا امكان دستكاري آن توسط قفل شكنان به حد اقل ممكن برسد.
درصد اطمينان اين نوع قفل 75%-65% مي باشد.

3- قفل با استفاده از موقعيت فايل روي هارد ديسك
اين نوع قفل فقط بر روي هارد ديسك قابل استفاده بوده و به اين صورت است كه فايل اجرايي به موقعيت خود بر روي هارد حساس مي باشد چرا كه قبل از اجرا ابتدا موقعيت خود را از روي سكتورهاي ROOT خوانده و سپس شماره كلاستر اشاره گر به خودش را بدست مي آورد, سپس آنرا با شماره كلاستري كه قبلا توسط برنامه نويس بر روي يكي از فايل هاي برنامه ( ممكن است بصورت كد شده باشد ) قرار داده شده, مقايسه كرده و در صورت برابر بودن اجرا مي شود. اين نوع قفل نسبت به قفل قبلي ( شماره 2 ) استفاده كمتري داشته چرا كه در صورتيكه برنامه از روي بخشي از هارد به ناحيه ديگري انتقال يابد, اجرا نخواهد شد و اين از نظر كاربر بسيار ناپسند مي باشد. ( ضمنا امكان Defra, Scandisk, و ... نيز وجود ندارد چرا كه شماره كلاستر اشاره گر به فايل تغيير خواهد كرد. )
ضريب اطمينان اين نوع قفل نيز 80%-70% مي باشد.

4- قفل با استفاده از فرمت غير استاندارد
اين شيوه يكي از رايج ترين قفل هاي نرم افزاري است كه هنوز هم بصورت جدي مورد استفاده قرار مي گيرد. برخي از دلايل اهميت آن عبارتند از:
- امكان استفاده از روش هاي متفاوت در اين روش
- راحتي و سرعت زياد به هنگام استفاده آن
- وجود ضريب اطمينان بالا و انعطاف پذيري زياد آن
- عدم وجود نرم افزار خاصي جهت باز كردن اين نوع از قفل ها
همان طور كه مي دانيم سيستم عامل جهت دسترسي به اطلاعات يك ديسكت از فرمت خاصي ( 18 سكتور در هر تراك ) استفاده مي كند اما اگر يه تراك به صورت غير استاندارد فرمت شود, ( مثلا 19 سكتور در تراك ) سيستم عامل ديگر توانايي استفاده از سكتورهاي غيرمجاز را نخواهد داشت و بنابراين تمام نرم افزارهاي تحت سيستم عامل مزبور نيز از سكتورهاي مخفي استفاده نكرده, در نتيجه امكان كپي برداري از آنها بسيار ضعيف است. مانيز از همين روش جهت طراحي قفل مورد نظر مان استفاده مي كنيم. بصورتيكه تراك آخر ديسك را بصورت يك سكتوري و با شماره 20 فرمت مي كنيم. سپس جهت كنترل ديسكت به سكتور فوق مراجعه كرده و در صورت وجود, كنترل برنامه را پي مي گيريم. البته غير از تغيير شماره سكتور مي توان از اندازه غير مجاز نيز استفاده كرد يعني بجاي اينكه سكتورها را بصورت 512 بايتي فرمت كنيم, از اندازه 1024, 2048 و ... استفاده مي كنيم. ( قفل نرم افزاري Copy Control كه معروفترين در نوع خود مي باشد, از همين روش استفاده مي كند. )
اين قفل فقط جهت فلاپي ديسك قابل استفاده مي باشد و در صد اطمينان در اين روش حدود 95%-85% مي باشد.

5- قفل با استفاده از شماره سريال ساختگي
اين روش قفل گذاري كه قويترين قفل مي باشد, بصورت مخلوطي از روش هاي 1 و 4 مي باشد يعني ابتدا تراك خاصي را بصورت غير استاندرد فرمت كرده و سپس اطلاعات خاصي را درون آن قرار مي دهند ( شماره سريال فرضي ). اين قفل فقط جهت فلاپي ديسك قابل استفاده بوده و ضريب اطمينان آن حدود 98%-90% مي باشد.


ادامه مطلب

عارف حردانی شنبه بیست و هفتم بهمن 1386  

 
تبليغات
 
 

مطالب پيشين

محدود کردن دسترسی کاربران به برنامه های کاربردی
هشت اشتباه مهلك در طراحي يك وب سايت
لایه های سیستم فایل
اصول پياده سازی نرم افزارهای مبتنی بر وب
MAC Address چيست؟
حذف كردن گزينه ها از منوي New
10 روش ساده برای کسب رتبه بالا در موتورهای جستجوگر
توضیحات کلی در مورد منوی Start ویندوز XP
سال نو مبارک
USB چيست و چه کاربردهايي دارد؟
ASP.NET و پايگاه داده
طريقه ثبت يك سايت در موتورهاي جستجو
چگونه آیدی خود را در سایت یاهو پاک کنیم؟
ذخیره عکس کنار ID افراد در یاهو مسنجر
به دست آوردن مشخصات کل قطعات سيستم


 

 

لينك باكس

 


powered by : AREF2760

دانلود رايگان

دانلود رايگان