PDA

View Full Version : کار کردن برنامه برای مدت محدود؟



vb.civil
پنج شنبه 02 آبان 1392, 17:47 عصر
سلام دوستان
من یه برنامه برای خودم نوشتم و میخوام این برنامه رو به کسی بدم اما نمیخوام همیشه بتونه ازش استفاده کنه یعنی بعد از یه مدتی دیگه کار نکنه !

آیا راهی به ذهنتون میرسه که ساده و بی دردسر بشه این کارو کرد؟ خیلی حرفه ای نمیخواد باشه طرف خیلی از هک و کامپيوتر سر در نمیاره

rahnema1
پنج شنبه 02 آبان 1392, 21:46 عصر
بعنوان یک راهکار ساده توی برنامه شما یک محدوده زمانی تعریف کنید مثلا دوست شما می خواهد فردا برنامه را اجرا کند شما از تاریخ فردا تا نهایتا پس فردا یک متغیر که تاریخ رو نگه می داره تعریف کنید هر وقت که برنامه بخواد اجرا بشه بررسی کنه توی اون محدوده هست یانه اما یک اشکال داره که اگه کاربر تاریخ سیستم رو عقب کنه می تونه برنامه رو دوباره اجرا کنه

one hacker alone
پنج شنبه 02 آبان 1392, 21:53 عصر
سلام
متغییر مقدارش ماندگار نیست وقتی سیستم خاموش بشه مگه اینکه مقدار رو به صورت رمز شده و با روش های خاص در فایل ذخیره بازیابی کرد
اما استفاده از dll در برنامه کمک زیادی میکنه به این صورت که شما برخی از توابع رو در dll تعریف میکنید به نحوی که حذف اون منجر به بروز خطا بشه و میتونید زمان رو هم در اون ذخیره کنید
یا از رجیستری استفاده کنید

vb.civil
جمعه 03 آبان 1392, 19:41 عصر
مرسی از نظرات دوستان

با توجه به اینکه میخوام یه کاری بکنم که خیلی نخوام روش وقت بزارم و در واقع یه کار سریع انجام داده باشم و تا حد قابل قبولی به نتیجه مطلوبم برسم من این ایده به ذهنم رسید، در تکمیل این ایده اگر دوستان نظری داشته باشند ممنون میشم

در هنگام اجرای برنامه چک بشه
1) تاریخ سیستم از تاریخ انتشار برنامه عقب تر نباشد و اگر بود کاربر مجبور به تنظیم تاریخ بشود و برنامه بسته بشود.
2) اگر تاریخ سیستم از تاریخ مشخصی (مثل 1/1/2014) به بعد بود برنامه بسته شود.

ضعف این کار اینه که اگه کاربر متوجه بشه هنگام استفاده از برنامه تاریخ سیستمشو در این بازه زمانی تنظیم میکنه !!!

R2du-soft
جمعه 03 آبان 1392, 20:52 عصر
بهترین کار اینه که برنامه با باز شدنش یک کلید داخل ریجستری بسازه و تاریخ دقیق سیستم رو درونش بزنه ، بعد یک کلید دیگه بسازه و تاریخ سیستم رو +30 روز کنه ،(مثلا شما میخواید که برنامتون 30 روزه باشه)
بعد از هربار اجرا تاریخ ثبت شده با تاریخ ثبت شده +30 رو چک کنه ، اگه به اون تاریخ رسید دیگه برنامه اجرا نشه.

دقت کنید که شما باید دو کلید تعریف کنید:

pc.date
expire.date
که توی pc.date تاریخ سیستم رو میزنید و توی expire.date تاریخ سیستم رو +30 میکنید و میزنید ، برنامه با هر بار اجرا اول یک عدد یه expire.date اضافه میکنه و اونو با expire.date
مقایسه و سپس تعداد دفعات اجرا و یا تعداد روزهای مونده برای اجرای برنامه رو میگه.
(کار مشکلی نیست زیادم وقت نمیخواد :چشمک:)


برای جلوگیری از یک مشکل ثبت جدید تاریخ برنامه پس از هربار اجرا،میتونید بگید که اگه اون کلید وجود داشت دیگه نسازتش.برنامه رو میتونید به 2 شکل مدت تاریخ (ثبت تاریخ) و یا محدودیت دفعات اجرا (ثبت عدد تعداد اجرا و تعداد مانده برای اجرای برنامه) بسازید.

با سپاس

+

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

vbhamed
شنبه 04 آبان 1392, 09:46 صبح
سلام

مهم روش انجام اينكار نيست، اين رو هر برنامه نويسي مي‌تونه با يه مقدار كار بفهمه كه توي رجيستري بنويسيه يا تو فايلي هارد ديسك و ...
مهم اينه كه جايي كه مي‌نويسيد از نظر دسترسي و تغيير پذيري چقدر امن باشه

نوشتن در فايل و رجيستري به هيچ عنوان امنيت نداره، نرم افزارهاي مانيتوري هستند كه كليه فايلها و كليدهاي رجيستري كه تغييرات روي اونها در حال انجامه رو مثل آب خوردن و در همون لحظه خوندن و نوشتن براتون ليست مي‌كنن و اصلا مهم نيست شما كجاي رجيستري يا هارد ديسك و چقدر به تصور خودتون مخفي نوشتيد

اما چند راه نسبتا امن براي ذخيره تعداد دفعات اجراي برنامه وجود داره
1 - نوشتن روي پارتيشن تيبل هارد ديسك كه اين راه بسيار مشكلي است و با زبانهاي سطح پايين مثل اسمبلي انجام ميشه و هميشه هم قابل انجام نيست، ضمنا اگر طرف هارد ديسكش رو دوباره پارتيشن بندي كنه مي‌تونه از برنامتون دوباره استفاده كنه، نرم افزارهايي مثل Virtual PC و VMWare هم كه مثل آب خوردن امكان اجراي هزاران بار برنامه رو فراهم مي‌كنن چون اصل كامپيوتر رو از نو براتون مي‌سازن ولي خب اگر ويندوز مجازي نباشه، راه نسبتا امني هست چون كمتر كاربري راضي ميشه پارتيشن تيبل رو تغيير بده و همه اطلاعاتش رو پاك كنه واسه يه نرم افزار

2 - استفاده از حافظه قفل سخت افزاري، اكثر قفل ها مقدار كمي حافظه به شدت محافظت شده در اختيار برنامه نويس قرار مي‌دن كه مي‌تونيد توش موارد دلخواه رو يادداشت كنيد و البته اين مورد هزينه داره كه براي نرم افزار نمايشي خيلي مناسب نيست ولي مثلا براي اينكه طرف تو نرم افزار اصلي كه خريد نتونه اطلاعات رو دستكاري كنه و با تاريخ اشتباه چيزي ثبت كنه مفيده

3 - استفاده از فضاي اينترنتي، يك هاست و دامين رايگان يا پولي كه مال شماست و برنامه دمو تعداد دفعات اجراي خودش رو در اون هاست درون يك فايل متني يا غيره مي‌نويسه و هربار موقع اجرا چك مي‌كنه، مشكل اين روش هم نياز به اتصال به اينترنت هست ولي براي نسخه نمايشي اشكالي نداره و اگر طرف از برنامه خوشش اومد ديگه برنامه اصليتون نياز به اينترنت نداره چون قفلش نوع ديگه اي بايد باشه و در كل اين روش، روش خيلي خوبي است
اسم فايل متني كه قراره روي هاست باشه مي‌تونه شماره سريال برنامه اي باشه كه شما به كاربر مي‌دين تا بين كاربران مختلف تداخل پيش نياد
خوبيه ديگه اين روش هم اينه كه خودتون مي‌تونيد هر موقع دلتون خواست يكي يا همه دموها رو غير فعال كنيد يا مدتش رو اضافه كنيد البته به شرطي كه تاريخ انقضاء رو هم درون اون فايل نوشته باشيد

البته همه روشهاي بالا هم قابل شكستن هستند ولي روشهايي هستند كه در كل امنيت بالاتري دارند و كار هر هكر تازه كاري نيست كه بخواد اونها رو بشكنه

با توجه به موارد بالا و اينكه در كل همه روشها قابل شكسته شدن هستن، بهترين و امن ترين روش ساخت نسخه دمو جداگانه از نرم افزار هست يعني نسخه اي كه از اصل كامل نباشه، مثلا برنامه حسابداري با قابليت ثبت نهايتا 10 فاكتور يا عدم چاپ گزارشات به اينصورت كه اصلا متدهاي چاپ درون برنامتون نباشه، اين خيلي مهمه، نياين بعضي متدها رو با دستورات شرطي محدود كنيد بلكه كلا اونها رو از سورس برنامه حذف كنيد، اينطوري برنامه دمو شما نياز به هيچ قفلي هم نداره

اگر اين هم جوابگوي نيازتون نيست، به كمك نرم افزار Camtasia, snagit, wondershare و ... يك نسخه دموي ويدئويي با توضيحات صوتي از برنامتون بسازيد، چيزي مثل سي‌دي‌هاي آموزشي تا ديگه كاملا خيالتون راحت باشه