PDA

View Full Version : سوال: طراحی Trail version



hosein3000
جمعه 12 اسفند 1390, 13:34 عصر
سلام

دوستان برای برنامه ام نسخه ازمایشی گذاشته بودم که مثلا در تاریخ مشخصی از کار بیافته و 10 روز کار کنه اما متاسفانه با تغییر تاریخ دوباره برنامه کار می کنه

اگه براتون ممکنه راهنماییم کنین که چکار کنم برنامه ام مثلا فقط 10 بار کار کنه و بعد از اون کد بخواد و کاربر هم نتونه این تعداد روز یا دفعه را دستکاری کنه

اگه یه نمونه سورس بذارین که عالی میشه

just4froum
جمعه 12 اسفند 1390, 14:06 عصر
شما هر کاری کنی بازم برنامت کرک میشه ولی میشه این کارو سخت تر کرد.

از نظر من بهترین کار اینترنت هست.

Mr'Jamshidy
جمعه 12 اسفند 1390, 15:24 عصر
ببین دوست من در این رابطه زیاد بحث شده

بهترین روشی که من تا بحال با اون رو به رو شدم روشی بود که دوستمون vbHamed پیشنهاد داد

نه نیازی به اینترنت داری و نه ... فقط باید برای ثبت برنامه از دستور IF و امثال اون مثل Select Case, IIF و ... استفاده نکنی یعنی همون دستورات شرطی

Veteran
جمعه 12 اسفند 1390, 15:30 عصر
برنامه ناقص رو بزار دمو
مثلا اگه توی برنامه ای که نوشتی
با بانک اطلاعاتی سرو کار داری
بیا دکمه ثبت اطلاعات بزار اما دیگه ویرایش و حذف اطلاعات رو نزار
یا اگه توی برنامت میشه اطلاعات رو چاپ کرد داخل اون صفحه بزن نسخه تریال
خلاصه اینکه برنامه کامل رو نزار واسه دمو یک سری محدودیت ها داشته باشه

hosein3000
جمعه 12 اسفند 1390, 22:36 عصر
با تشکر از دوستان

در مورد قفل و سریال به نظرتون چیکار کنم؟
نرم افزار من تخصصیه و فکر نکنم زیاد به کار هکرا بیاد فقط هدف من ارائه نرم افزار در ازای دریافت مبلغ مشخصیه ولی موندم چطوری اینکارو انجام بدم

Mr'Jamshidy
جمعه 12 اسفند 1390, 22:59 عصر
ببین دوست من

نرم افزار تخصصی و غیر تخصصی نداره

نرم افزاری که پولی باشه و بدرد کسی بخوره کرک میشه

شما هم تریال برنامه رو بزار و تحویل طرفت بده

اگر خواست باید بخره

اگر هم نخواست که بعد از مدت معینی برنامه از کار میوفته

ولی سعی کن مدت معین رو نحایتا 3 روز بیشتر نشه

hosein3000
شنبه 13 اسفند 1390, 00:29 صبح
خوب آقای جمشیدی
مشکل منم همینه دیگه
میشه یه سورس برام معرفی کنین که فقط بشه 3 روز ازش استفاده کرد و با تغییر تاریخ سیستم نشه دوباره ازش استفاده کرد ؟
چون من هر سورسی که پیدا کردم با برگرداندن تاریخ به روز اول دوباره برنامه باز میشه

shahabbasic
شنبه 13 اسفند 1390, 01:06 صبح
ببین این روشی هست که خودم ابداع کردم این برنامه 3 دفعه بیشتر باز نمیشه
http://www.faupload.com/upload/90/Esfand/3.exe
این کار نه از طریق رجیستری انجام گرفته و نه از طریق فایل
اگر خوشت اومد بگو واست توضیح بدم

hosein3000
شنبه 13 اسفند 1390, 01:26 صبح
با تشکر

ولی متاسفانه نتونستم فایل رو دانلود کنم چون بلافاصله بعد از دانلود یه خطایی می ده

همچنین انتی ویروس هم در جا پاکش کرد

چرا؟؟؟

عکس خطا رو ضمیمه کردم

سید حمید حق پرست
شنبه 13 اسفند 1390, 01:34 صبح
سلام
من دانلودش کردم این خطارو میده :
83600
این روش در خود برنامه ذخیره میشه . درسته؟

این روش رو اگه واسه همون تریال که اقای جمشیدی فرموندن اگه استفاده میکنی خوبه . ولی واسه نسخه اصلی استفاده نکن


موفق باشی


یا علی (ع)

hosein3000
شنبه 13 اسفند 1390, 11:54 صبح
خوب میشه برای نسخه تریال یه سورس بذارین ؟

joker_pok
شنبه 13 اسفند 1390, 13:32 عصر
نسخه آزمایشی کاری نداره منم تو جلوگیری از تغییر تاریخ سیستم موندم چیکار کنم اما واسه نسخه آزمایشی کمکت می کنم .

مثلا وقتی رکورد ذخیره می کنی قبل ذخیره بنویس اگر تعداد کل رکور ها بزرگتر مساوی 5 بود خطا بده نزار ثبت کنه . به قول دوستان دکمه ویرایش و چاپ و اینارو نزار تو برنامه . محدود و محدودترش کن .

البته یا باد امنیت پایگاه داده رو ببری بالا بهش دسترسی نداشته باشن یا از flexgrid استفاده کن و تعداد سطر های نمایشی رو محدود کن به 5 تا و یه سری خلاقیت های دیگه که بستگی به خودت داره

Veteran
شنبه 13 اسفند 1390, 13:40 عصر
مثلا وقتی رکورد ذخیره می کنی قبل ذخیره بنویس اگر تعداد کل رکور ها بزرگتر مساوی 5 بود خطا بده نزار ثبت کنه

نه این کارو نکنی راحت میشه کرک کرد و شرط رو معکوس کرد

همون چیزی که گفتم رو انجام بده
مثلا دکمه ثبت و عمل ثبت رو انجام بده
دکمه ویرایش و حذف رو هم بزار کنایش اما کد واسش ننویس واسه قشنگی
البته توی نسخه تریال
نسخه فول که دیگه باید همه چی کار بکنه
=======================
من بودم این کارو میکردم

joker_pok
شنبه 13 اسفند 1390, 14:30 عصر
اره دوست عزیزم کامل ترش کرد من این نمونه رو واسه آموزش بهت دادم که به جای شرط هم می تونی هر کاری بکنی مثلا کد نزاری یا هر اتفاق دیگه خلاصه از همه لحاظ می تونی استاده کنی بهترین راهش هم همینه کدی تو قسمت دستورات ننویس فقط یک msgbox بزار ملک کف کنن فکر کنن خبریه پشت برنامه به همین راحتی

hosein3000
شنبه 13 اسفند 1390, 16:12 عصر
با تشکر

ولی این روش هم فکر نکنم برا برنامه من جواب بده چون الان بیام برا همه دیتابیس ها یه محدودیتی بذارم و کلا برای تمام فرم ها باید حدود 1 ماه دوباره روش کار کنم چون فرم هام و فیلد هاش زیاده

ولی فکر کنم باید روی روش آقای Veteran کار کنم یعنی باید بعضی از قسمت هاشو غیر فعال کنم

یه مشکل دیگه می مونه و اونم قفلشه
برا قفل چیکار کنم به نظرتون
یا همینطور مثل نسخه های قبلی بیخیال پول بشم و رایگان بذارمش برا دانلود ؟؟:افسرده:

سید حمید حق پرست
شنبه 13 اسفند 1390, 16:33 عصر
سلام
در مورد قفل نرم افزاری یه کم توضیح بدم :

1-در قفل نرم افزاری نباید از یه دستور IF استفاده کنیم . باید دستورات IF زیاد و از روشهای دیگه که کار دستور IF را انجام میدن هم استفاده کنیم مثل :
#Const fullVer = 0

Private Sub Command1_Click()

#If fullVer Then

MsgBox "Full version", vbInformation

#Else

MsgBox "Trial version", vbExclamation

#End If

End Sub
2- اگه قفل درست نبود باید برنامه END بشه بدون هیچ مسجباکسی ( چون مسجباکسها کار کرکر رو راحت میکنه )
3- اول در لواد فرم وجود قفل را بررسی میکنیم اگه درست بود برنامه اجرا بشه اگه نه END . حالا فرض کنیم که شرطی که در لواد فرم گذاشتیم توسط کرکر برگردونده شده حالا برای جلوگیری از اینکار در چند جا مثل MouseDown فرم و MouseMove و کلیک روی دکمه های برنامه و ... وجود قفل را بررسی کنیم اگه قفل درست بود که هیچ اگه درست نبود میفهمیم که برنامه کرک شده و یا برنامه رو END میکنیم یا حذف میکنیم
4- بعد از کمپایل کردن برنامه اون رو با یه پکر قوی پک میکنیم . من از پکری استفاده میکنم که اگه برنامه های مثل OLLYDBG اجرا بشه برنامه END میشه و اگه برنامه رو داخل OLLYDBG بعضی دیگر از رم افزارهای کرک باز کنن سیستم هنگ میکنه
5- با این کارها فقط کار کرکرها سخت میشه اما جلوی کرک هیچ وقت گرفته نمیشه

موفق باشید


یا علی (ع)

hosein3000
شنبه 13 اسفند 1390, 17:27 عصر
مرسی بابت راهنماییتون

ولی تا اینجاش مشکلی ندارم

مشکل من در نحوه طراحیه چون رشته من کامپیوتر نیست به همین علت نمی تونم بشینم یه قفل توپ طراحی کنم اگه یه سورس مطمئن و کارا سراغ دارین ممنون میشم برام بذارین

Veteran
شنبه 13 اسفند 1390, 17:42 عصر
سورس که به درد نمیخوره چرا که اگه سورس باشه خب طرز قفل کردن معلمومه سری کرک میشه

اما
ولی فکر کنم باید روی روش آقای Veteran کار کنم یعنی باید بعضی از قسمت هاشو غیر فعال کنم
غیر فعال نه
کلا برای بعضی از قسمت ها کد ننویس
================================================== ==============
استفاده از شرط ها و اینجور چیزا در قفل گذاری برنامه مناسب نیست
کرکر اون هارو معکوس میکنه
=========

hosein3000
شنبه 13 اسفند 1390, 18:12 عصر
پس بهترین راه به نظر شما ؟؟

ARData
شنبه 13 اسفند 1390, 18:20 عصر
ساده ترین و مطمئن ترین راه ایجاد یک رجیستری و مطابقت آن با مقدار وارده (سریال کد یا رجیستری کد و یا هر اسمی که روش بذاریم) هستش ... ایجاد رجیستری هم در نوع خود نباید در کل رجیستری ویندوز شناخته شود مثلا تاریخ اتمام تریال رو به جای 20120701 اینطوری تعریف کنیم : 20070112 و جمله سریال رو هم یونیکد یا هر مبدل دیگری که واقعی نباشد تعریف شود مثلا از مبدلات باینری به طور فرض اگه کلمه رمز hex : 4DBB12345 باشد تبدیلش برابر است با : 10011011011101100010010001101000101

joker_pok
شنبه 13 اسفند 1390, 18:28 عصر
کاری نداره قفل نرم افزاری هم ساختن فقط یه نکته از فایل های DLL و OCX سعی کن برای طراحی قفل اصلا و ابدا استفاده نکنی

سید حمید حق پرست
شنبه 13 اسفند 1390, 18:36 عصر
کاری نداره قفل نرم افزاری هم ساختن فقط یه نکته از فایل های DLL و OCX سعی کن برای طراحی قفل اصلا و ابدا استفاده نکنی

خب دوست عزیز یه برنامه بنویس و اون قفلی که میگید کاری نداره بزار روش و exe رو بزار اینجا


یا علی (ع)

joker_pok
شنبه 13 اسفند 1390, 18:47 عصر
باشه اسرع وقت چشم مینویسم

hosein3000
شنبه 13 اسفند 1390, 20:21 عصر
منم منتظرم مهندس جون
معطل تریال و قفلم فقط

hosein3000
شنبه 13 اسفند 1390, 20:33 عصر
دوستان تو نت اینو پیدا کردم میشه یه لطفی کنین و نگاه کنین ببینین برای نسخه تریال که من دنبالشم بدرد می خوره یا نه
اصلا عملیه این روش ؟؟؟

http://www.advancedinstaller.com/user-guide/tutorial-licensing.html

مرسی

سید حمید حق پرست
شنبه 13 اسفند 1390, 20:58 عصر
برفرماید اینم یه نمونه


موفق باشید


یا علی (ع)

alizanganeh
یک شنبه 14 اسفند 1390, 01:51 صبح
بنظر من بهترین راه اینه که خودت تعداد روزها رو بشمری و کاری به تاریخ سیستم نداشته باشی
این دقیقا کاریه که نرم افزار هایی مثل IDM انجام میدن
واسه همینه که با تغییر تاریخ سیستم گول نمیخورن
و بهترین کار اینه که توی یک فایل متنی و توی یک جایه گموگور شده مثل system32 ذخیره کنی و یا توی رجیستری ذخیره کنی و طوری بذاریش که نشه تشخیصش داد
بنظرم اینا بهترین روش ها هستند

hosein3000
یک شنبه 14 اسفند 1390, 01:55 صبح
به نظر من هم این بهترین راهه
فقط چطوری تاریخ رو با هم جمع بزنیم؟
مثلا از امروز تا 10 روز دیگه رو چطوری می تونیم تو یه فایل dat یا هر پسوند دیگه بنویسیم؟

joker_pok
یک شنبه 14 اسفند 1390, 09:21 صبح
آشنایی با نحوه ساخت قفل های نرم افزاری


تا وقتی که قانون Copyright نرم افزار در ایران به صورت کامل اجرا نمی شود، لزوم پرداختن به بحث قفل های نرم افزاری بیشتر احساس می شود. در اين مقاله سعي بر اين است تا علاوه بر آشنايي با انواع قفل هاي نرم افزاري و بررسی اختلاف آن ها با قفل هاي سخت افزاري، بتوانيم به عنوان طراح يك قفل نرم افزاري از محصولات نرم افزاري خودمان حمايت كنيم. ضمنا علاوه بر آشنايي با مفاهيم فوق، نوشتن روتين هاي ضد ديباگ (Debug) و همچنين نحوه كد كردن اطلاعات نيز تا حدی مورد بررسی قرار خواهد گرفت.

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

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

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

آشنايي با روش هاي قفل گذاري و نحوه طراحي آن ها
1- قفل گذاري با استفاده از شماره سريال اصلي ديسكت
همانطور كه مي دانيد، سيستم عامل جهت هر ديسكت يك شماره سريال واحد (UNIQUE) اختصاص مي دهد، بطوريكه شماره سريال هر دو ديسكت با هم يكي نيستند. بنابراين همين خود يك راه تشخيص ديسكت كليد (قفل) مي باشد. جهت استفاده از اين قفل مي بايست شماره سريال ديسكت را خوانده و سپس در داخل برنامه آنرا كنترل نمائيم. يك راه ساده جهت خواندن شماره سريال، اجراي دستور VOL بصورت شكل زیر است:
VOL >>C:DOSLCK.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% مي باشد.

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

الف: غير فعال كردن وقفه ها جهت جلوگيري از اجراي مرحله به مرحله ( Trace كردن ) برنامه:
مي توان وقفه هاي كنترلر 8359 را غير فعال ساخت. (در مورد وقفه ها بحث های نسبتا مفصل و کاملی در سایت میکرو رایانه انجام شده برای مطالعه بیشتر دراین مورد به سایر مقالات سایت میکرو رایانه مراجعه نمایید) آدرس اين كنترلر 21h بوده و IRQ هاي 7-0 را كنترل مي كند IRQ1 همان وقفه مربوط به صفحه كليد مي باشد. پس با غير فعال كردن اين وقفه مي توان صفحه كليد را غير فعال نمود. طريقه استفاده:
CS:0100 E421 IN AL,21
CS:0102 0C02 OR AL,02
CS:0104 E621 OUT 21,AL
ب: تغيير بردار وقفه ها
يكي از روش هاي ساده و راحت جهت ضد ديباگ كردن برنامه ها تغيير برداري است كه ديباگر از آن استفاده مي كند. (03 ) حتما بخاطر بسپاريد كه در پايان برنامه دوباره آدرس بردار وقفه تغيير داده شده را بازيابي كنيد. طريقه استفاده:

CS:0100 EB04 JMP 0106
CS:0102 0000 ADD ,AL
CS:0104 0000 ADD [BX+SI],AL
CS:0106 31C0 XOR AX,AX
CS:0108 8EC0 MOV ES,AX
CS:010A 268B1E0C00 MOV BX,ES:[000C]
CS:010F 891E0201 MOV [0102],BX
CS:0113 268B1E0E00 MOV BX,ES:[000E]
CS:0118 891E0401 MOV [0104],BX
CS:011C 26C7064C000000 MOV Word Ptr ES:[000C],0000
CS:0123 26C7064E000000 MOV Word Ptr ES:[000E],0000

[B]ج: گيج كردن ديباگر
اين راه يكي از قويترين تكنيك هاي ضد ديباگ بوده كه در آن به وسط يك دستور، پرش مي شود و اينكار باعث قفل كردن (Hang) ديباگر خواهد شد. طريقه استفاده:
CS:0100 E421 IN AL,21
CS:0102 B0FF MOV AL,FF
CS:0104 EB02 JMP 0108
CS:0106 C606E62100 MOV Byte Ptr [21E6],00
CS:010B CD20 INT 20

د: كنترل پرچم هاي CPU
اين روش در برابر ديباگرها بسيار مفيد مي باشد و به اين صورت است كه ابتدا پرچم Trace از CPU را خاموش كرده و در بين برنامه آنرا كنترل كنيم. در صورتي كه اين پرچم روشن شده باشد، مشخص است كه ديباگر در پشت صحنه در حال اجراست. طريقه استفاده:
CS:0100 9C PUSHF
CS:0101 58 POP AX
CS:0102 25FFFE AND AX,FEFF
CS:0105 50 PUSH AX
CS:0106 9D POPF
و در بين برنامه از دستورات ذيل استفاده كنيد:
CS:1523 9C PUSHF
CS:1524 58 POP AX
CS:1525 250001 AND AX,0100
CS:1528 7402 JZ 152C
CS:152A CD20 INT 20

ه: متوقف ساختن ديباگر
اين روش باعث متوقف شدن ديباگر مي شود كه با اجراي دستور ساده INT 03 مي توان اين كار را انجام داد. طريقه استفاده:
CS:0100 B96402 MOV CX,0264
CS:0103 BE1001 MOV SI,0110
CS:0106 AC LODSB CS:0107 CC INT 3
CS:0108 98 CBW
CS:0109 01C3 ADD BX,AX
CS:010B E2F9 LOOP 0106

روش هاي كد كردن اطلاعات Data Coding Procedures

الف: افزودن يك عدد به كد هاي يك فايل
در اين روش جهت كد كردن يك فايل، ابتدا آن را خوانده و سپس يك مقدار خاص، مثلا 20 را به مقدار هر بايت فايل اضافه مي كنيم. اين يكي از ساده ترين روش ها بوده و نسبتا كارايي خوبي نيز دارد. جهت خارج كردن فايل از حالت كد شده (Decode) نيز، كافيست مقدار فوق را از تمام بايت هاي فايل كم كنيم.

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

مثالی از یک برنامه قفل گذار Pascal Source To Learn
در زير ليست دو برنامه نمونه، كه شماره (1) جهت درست كردن ديسكت قفل و شماره (2) جهت تست آن طراحي شده، آورده شده است: در اين برنامه ها از تراك 81 و سكتور 20 (در حالت عادي هر ديسكت فقط 18 سكتور دارد) جهت قفل برنامه استفاده شده و به اين صورت عمل مي كند كه يك رشته را از كاربر دريافت كرده و در مكان فوق قرار مي دهد و سپس جهت تست رشته دريافتي در برنامه دوم آن را با اطلاعات موجود در ديسكت مقايسه مي كند و با دادن پيغام مناسبي آن را چاپ مي نمايد. اين برنامه توسط Turbo Pascal 7.0 كامپايل و اجرا شده اند.
برنامه شماره (1)
اين برنامه جهت ساختن ديسكت قفل استفاده مي شود

program PROGRAM-1;
Uses Dos;
TYPE DAT = String[40];
VAR
C : Registers;
FP : String[15];
PU : Array[1..512] of char;
Data: Dat;
I : Byte;
Key : Dat;
{******************************************}
Procedure ZUW;
Begin
Fp:=#81+#0+#20+#2;
c.d1 :=0;
c.dh :=0;
c.ch:=81;
c.c1:=20;
c.a1:=1;
end;
Procedure Write-Key(data:Dat);
Begin
c.ah:=5;
ZUW;
c.es:=Seg(fp[1]);
c.bx:=Ofs(fp[1]);
Intr(19,c);
c.ah:=5; ZUW;
c.es:=Seg(fp[1]);
c.bx:=Ofs(fp[1]);
Intr(19,c);
For i:=1 to Length(data) do
Pu:=data;
Pu[i+1]:=#0;
c.ah:=3; ZUW;
c.es:=Seg(Pu);
C.bx:=Ofs(Pu);
Intr(19.c);
end;
{******************************************}
begin
Writeln;
Writeln( Program Number1 );
Writeln( This Program Used For Create The Key );
Write( Please Type Key Word : );
Readln(Key);
Writeln;
Write( Writing Key …);
Write-Key(Key);
Writeln( OK .);
Writeln;
end.

برنامه شماره (2)
اين برنامه جهت كنترل ديسكت قفل استفاده مي شود
program PROGRAM-2;
Uses Dos;
Type DAT = String[40];
Var
C : Registers;
FP : String[15];
PU : Array[1 ..512] of char;
Data: Dat;
I : Byte;
Key : Dat;
{******************************************}
Procedure ZUW;
Begin
Fp:=#81+#0+#20+#2;
c.d1:=0;
c.dh:=0;
c.ch:=81;
c.c1:=20;
c.a1:=1;
end;
{******************************************}
Function Read-Key(Key:Dat):Boolean;
Begin
c.ah:=2;
ZUW;
c.es:=Seg(pu);
c.bx:=Ofs(pu);
Intr(19.c);
c.ah:=2;
ZUW;
c.es:=Seg(pu);
c.bx:=Ofs(pu);
Intr(19,c); I:=1;
data:=; While pu#0 do
begin
Data :=data+pu[];
Inc(I);
end;
If data=Key then
Read-Key:=True
Else
Read-Key:=False;
end;
{******************************************}
begin
Writeln;
Writeln( Program Number2 );
Writeln( This Program Used For Check The Key );
Write( Please Type Key Word : );
Readln(Key);
Writeln;
If Read-Key(Key)=False then
Writeln( I am Sorry , Not Found .);
Else
Writeln( Very Good , That Found .);
Writeln;
end.

joker_pok
یک شنبه 14 اسفند 1390, 09:26 صبح
برنامش تو دلفی یا پاسکال نوشته شده میتونین به وی بی تغییر بدین

joker_pok
یک شنبه 14 اسفند 1390, 14:07 عصر
اینجا هم نمونه زده قفل قشنگی ساخته خودت از تو کد هاش استفاده کن
http://www.mspsoft.com/1390/11/14/%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D8%B3%D9%88%D8%B1%D8%B3-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D9%82%D9%81%D9%84-%D8%B3%D8%B1%DB%8C%D8%A7%D9%84%DB%8C-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D9%88%DB%8C/

hosein3000
یک شنبه 14 اسفند 1390, 19:13 عصر
دوستان تو نت اینو پیدا کردم میشه یه لطفی کنین و نگاه کنین ببینین برای نسخه تریال که من دنبالشم بدرد می خوره یا نه
اصلا عملیه این روش ؟؟؟

http://www.advancedinstaller.com/user-guide/tutorial-licensing.html

مرسی

اساتید میشه یه لطفی کنین به این لینک یه نگاهی کنین بببینین به درد من می خوره یا نه؟

quiet_programmer
یک شنبه 14 اسفند 1390, 19:34 عصر
باسلام.


دوستان تو نت اینو پیدا کردم میشه یه لطفی کنین و نگاه کنین ببینین برای نسخه تریال که من دنبالشم بدرد می خوره یا نه
اصلا عملیه این روش ؟؟؟

http://www.advancedinstaller.com/use...licensing.html (http://www.advancedinstaller.com/user-guide/tutorial-licensing.html)
آقا حسین دمت گرم. واقعا حال دادی. عالی بود. حالا تریال ساختنشو نمیدونم ولی setup ساختنش خیلی باحاله. مرسی. فقط خود این برنامه هم تریاله. کرکی چیزی واسش نداری؟


اساتید میشه یه لطفی کنین به این لینک یه نگاهی کنین بببینین به درد من می خوره یا نه؟ اینچیزی که اینجا به عنوان نمونه توضیح داده واسه دات نته. البته چون داره از فایل dll تو سورس برنامه استفاده میکنه شاید بشه با vb6 پیادش کرد. باز دوستان نظر بدن. از طرف دیگه فکر کنم دوستان روش کد نویسی رو بره این کار میخواستن. در کل نرم افزار جالبیه فقط حیف که تریاله.
واقعا یه تشکر ازت کمه. کاش میشد میتونستم به مدت 5 دقیقه و به طور متوالی روی دکمه تشکر کلیک کنم و ازت تشکر کنم. تاحالا نشده بود از پستی به این شدت خوشم بیاد.مرسی

یاحق.
موفق باشید/

SlowCode
یک شنبه 14 اسفند 1390, 21:11 عصر
بعضی از ستاپ سازها مانند Setup factory این قابلیت رو دیدم، ولی استفاده نکردم. میخواستم بدونم امینتش چطوره!

hosein3000
یک شنبه 14 اسفند 1390, 22:29 عصر
با تشکر می گردم کرکشم پیدا می کنم
در مورد setup factory هم بگم که من تستش کردم این قابلیتو داره خیلی هم خوبه با تعویض تاریخ یا پاک کردن رجیستری هم خطا می ده ولی متاسفانه این قابلیت برای setup هستش نه برنامه
اما لینکی که بالا گذاشتم برای برنامه هم این کارو می کنه

ففط خوبی setup factory اینه که فایلهای ضروری برای برنامه رو هم به setup اضافه می کنه نمی دونم این برنامه هم این کارو انجام می ده یا نه

خلاصه موندم برای این برنامه ام چیکار کنم؟

Mr'Jamshidy
دوشنبه 15 اسفند 1390, 21:20 عصر
در مورد امنیت نسخه تریال که با ستاپ اعمال بشه امنیتش به زیر صفر میرسه چون من خودم کرک کردم دارم میگم

مگر این که ست آپ رو دستی بسازید و از تکنیک های آنتی کرک استفاده کنید