PDA

View Full Version : چه جوری میشه برنامه ای نوشت که فقط 1بار اجرا بشه؟



javid_debugger
شنبه 15 فروردین 1388, 18:37 عصر
من می خواستم برنامه ای بنویسم که فقط 1 بار اجرا بشه.یعنی اگر برای بار دوم کاربر برنامه رو اجرا کرد , برنامه ارور بده و اجرا نشه.

لططفا کمک کنید

Babak.Hassanpour
شنبه 15 فروردین 1388, 19:44 عصر
راه های بسیاری وجود داره اما بستگی داره شما بخواهی بعد از تعویض سیستم عامل هم برنامه اجرا نشه یا نه
امتداول ترین روش ذخیره یک مقدار در رجیستری سیستم در اولین اجرا است و اینکه برنامه باید قبل از شروع چک کنه ببینه اون مقدار موجوده یا نه؟اگه هست اجرا نشه.
رهش هم اینه



Private Sub Form_Load()
on error resume next

dim s as string
s=GetSetting(App.EXEName, "Key", "Value")

if s="1" then
end
else
SaveSetting App.EXEName, "Key", "Value", "1"


'code morede nazar


end if

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

javid_debugger
شنبه 15 فروردین 1388, 20:15 عصر
ممنون از شما دوست عزیز.برای روشی که بعد از تعویض سیستم عامل هم اجرا نشه هم کدی دارید.اگه دارید ممنون می شم اگه بزارین.چون من از این کد می خوام تو یه برنامه فروشی استفاده کنم .البته تو برنامه ای که برای تست به مشتری داده میشه.

vahidm
شنبه 15 فروردین 1388, 23:19 عصر
سلام دوست عزيزم
ببينيد من خودم همين كار رو با برنامه هايي كه از بانك اطلاعاتي استفاده كردم انجام دادم اگر بانك اطلاعاتي داريد بگيد تا من براتون توضيح بدم

javid_debugger
یک شنبه 16 فروردین 1388, 08:32 صبح
اقای Vahidm میشه راجبه این روشی که گفتید توضیح بدید.بانک اطلاعاتی هم دارم.

Babak.Hassanpour
یک شنبه 16 فروردین 1388, 11:36 صبح
اصول کار با بانک اطلاعاتی هم بر مبنای ذخیره یک مقدار در اون و چک کردنش در هربار اجرای برنامه است
این روش ها برای کاربر معمولی ممکنه مفید باشه ولی اگه طرف حرفه ای باشه چی؟
می تونه قبل از اجرای برنامه شما از رجیستری بکاپ بگیره و هر بار قبل از اجرا بکاپ رو برگردونه اینطوری روش مبتنی بر رجیستری خنثی میشه.
توی بانک اطلاعاتی هم میتونه یک پشتیبان تهیه کنه و تا هر چند بار که خواست استفاده کنه.

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

javid_debugger
یک شنبه 16 فروردین 1388, 13:03 عصر
اقای babak125 شما می گی من چه کار کنم.کدوم راه بهتریه؟ شما سکتور نویسی رو راه خوبی می بینید.ایا روش خوبیه؟البته من فکر می کنم روش مبتنی بر فایل روش بدی نباشه.
دوستان کمک کنید لطفا!

Babak.Hassanpour
یک شنبه 16 فروردین 1388, 14:00 عصر
دوست عزیز شما باید تصمیم بگیرید با توجه به سطح علمی مشتری کدوم راه براتون بهتره.من اصول مزایا و معایب هر روش رو گفتم.در کل :
آسانترین روش : رجیستری امنیت : خیلی پایین
سطح متوسط : بهره گیری از فایل (شامل بانک اطلاعاتی هم میشه ) امنیت : اگه مسیر فایل رو پروتکت کنی بدک نیست
سخت ترین روش : نوشتن روی سکتور هایی از هارد امنیت : عالی (بخصوص اگه با مستر بوت رکورد باشه) خطرات : امکان نابود شدن اطلاعات یا صدمه به هارد به علت عدم انتخاب مکان ذخیره اطلاعات

saeid12
یک شنبه 16 فروردین 1388, 15:12 عصر
به نظر من اگه با فایل ها کار کنی خیلی بهتره چون من خودم هم با فایل ها کار میکنم و تا حالا به مشکلی نخوردم.

reza_mn
یک شنبه 16 فروردین 1388, 15:20 عصر
دوست عزیز همونطور که Babak125 گفتند اگه از ابزارهای مانیتورینگ فایل و یا رجیستر استفاده بشه خیلی راحت میشه اونارو خنثی کرد ، با این ابزارها میتونین ببین کدوم برنامه ، کدوم فایل رو باز کرد ، حذف کرد و یا چیزی نوشت ، و همینطور در مورد رجیستر ، بدون اینکه بخوای از رجیستر بکاپ بگیری ، میشه مشخص کرد تو کدوم کلید چه مقداری زده شده .
اگه شما هدف از این کار رو بفرمایین میشه یه پیشنهاداتی کرد .

masoud.ramezani
یک شنبه 16 فروردین 1388, 15:38 عصر
سلام

چرا برای برنامتون یک قفل نرم افزاری نمینویسید. مطالب زیادی در این زمینه وجود دارد.

vahidm
یک شنبه 16 فروردین 1388, 20:32 عصر
سلام
ببخشيد به نظر خودتون كاربرتون حرفه اي هستش ؟‌
ببينيد من خودم براي برنامه هايي كه مي نويسم اين كار رو مي كنم خيلي هم ساده هستش شما يه فيلد رو براي اين كار قرار مي دين اول مقدار اون رو به طور پيش فرض 1 قرار مي ديد وقتي برنامه براي اولين بار اجرا شد فيلد مورد نظر را از 1 به مقدار 2 تغيير مي ديد و با استفاده از كدي كه در قسمت اجراي برنامه مي نويسيد مي تونيد چك كنيد كه مقدار يك هست يا 2 اگر يك بود وارد بشه و اگر مقدار فيلد 2 بود برنامه رو ببندد .
اگر متوجه نشديد بگيد تا بيشتر بگم و اينكه روش دوستان هم خوب هستش ولي بايد در نظر داشت كه اگر ويندوز رو مجدد نصب كردند اون وقت به مشكل بر مي خوريد
موفق باشيد

meys34
دوشنبه 17 فروردین 1388, 12:36 عصر
دوست عزیز شما باید تصمیم بگیرید با توجه به سطح علمی مشتری کدوم راه براتون بهتره.من اصول مزایا و معایب هر روش رو گفتم.در کل :
آسانترین روش : رجیستری امنیت : خیلی پایین
سطح متوسط : بهره گیری از فایل (شامل بانک اطلاعاتی هم میشه ) امنیت : اگه مسیر فایل رو پروتکت کنی بدک نیست
سخت ترین روش : نوشتن روی سکتور هایی از هارد امنیت : عالی (بخصوص اگه با مستر بوت رکورد باشه) خطرات : امکان نابود شدن اطلاعات یا صدمه به هارد به علت عدم انتخاب مکان ذخیره اطلاعات

ببخشيد چه جوري ميشه مسير فايلو پرتكت كرد كه با برنامه هاي مونيتورينگ، مسيرش پيدا نشه؟:متفکر:

Babak.Hassanpour
دوشنبه 17 فروردین 1388, 13:20 عصر
راجع به پروتکت کردن مسیر فایل که دوستمون پرسیدن باید بگم
اول اینکه فایل شما نباید از همون ابتدا کنار برنامه باشه یا موقع ستاپ ساخته بشه بلکه برنامه باید اون رو در اجرای اول توی هارد ایجاد کنه
دوم اینکه قبل از ایجاد فایل باید پروسه های فعال رو به دنبال ابزار هایی نظیر FileMon , RegMon و ... مونیتور کنه و اونها رو غیر فعال کنه (رجوع کنید به مباحث آنتی دیباگ جهت یافتن کد های مربوطه)
سوم اینکه روش هایی وجود داره که میشه متوجه شد کاربر درحال کاربا چه پوشه ای است (با استفاده از هوک کردن) سپس اقدام به قطع دسترسی کاربر به پوشه مربوطه نمود
در مورد سیستم فایل NTFS هم سطوح امنیتی خوبی رو میشه برای پوشه ها تعیین کرد و اینکه چه کاربری حق استفاده از اون رو داره
در نهایت هم اقدام به ایجاد فایل مربوطه کرد

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

scarce
دوشنبه 17 فروردین 1388, 17:54 عصر
همونطور که دوستان گفتند من راهی به شما توصیه می کنم که شاید بدرد شما بخوره البته کرک شدن این طور برنامه ها خیلی راحته
ولی میشه کاری کرد که کرکر نتونه کاری با برنامه شما انجام بده !

خوب با این کار که می گم می تونی خیلی راحت برنامه رو از تعداد که می خوای اجرا بشه

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

pernia
چهارشنبه 19 فروردین 1388, 09:20 صبح
اینی که پیشنهاد میدم بهترین راهه:
FILE1.EXE اجرا میشه و میره توی حافظه که قراره بعد از یکبار دیگه اگه آسمون هم به زمین بیاد... کار نکنه...

این فایل FILE1.EXE توی خودش زیربرنامه ای رو داره که FILE2.EXE رو میسازه و اجراش میکنه ....
خوب حالا هروقت خواستی میتونی FILE2.EXE رو صدا بزنی...
کار FILE2.EXE هم اینه که میزنه FILE1.EXE میبنده و به صورت فیزیکی خرابش میکنه و خلاص..
:چشمک:

Babak.Hassanpour
چهارشنبه 19 فروردین 1388, 11:59 صبح
اینی که پیشنهاد میدم بهترین راهه:
:چشمک:

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

pernia
چهارشنبه 19 فروردین 1388, 16:15 عصر
خیر دوست عزیز نه تنها بهترین راه نیست بلکه یکی از بد ترین راه هاست چراکه:....


حق با شماست.
گفتم شاید قصد نابودی فایل رو داره....:بامزه:
اما حالا باید بگم همونطور که همه پیشنهاد میدن
در این موارد باید token هایی رو بکاریم یه جاهایی تا بعدا به کمکمون بیاد و مچ گیری کنیم...
باید بیشتر دقت میکردم و منظورش رو کامل میگرفتم.
مرسی عزیز:تشویق:

رضا-امری
چهارشنبه 19 فروردین 1388, 17:34 عصر
برای اولين بار يه رمز تو یه فايل (مثلاً متنی) بنويس بعد اونو تو يه جای خاص که فقط خودت می دونی تو هارد مورد نظر Save کن. موقع load برنامه اونو بخون و بلافاصله بعد از خوندن تغييرش بده و دوباره با خود VB روی همون فايل Save کن. (:

Babak.Hassanpour
چهارشنبه 19 فروردین 1388, 17:43 عصر
برای اولين بار يه رمز تو یه فايل (مثلاً متنی) بنويس بعد اونو تو يه جای خاص که فقط خودت می دونی تو هارد مورد نظر Save کن. موقع load برنامه اونو بخون و بلافاصله بعد از خوندن تغييرش بده و دوباره با خود VB روی همون فايل Save کن. (:

اینو خوب اومدی :قهقهه: :قهقهه: :قهقهه:

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

REZADG
چهارشنبه 19 فروردین 1388, 21:58 عصر
منم یه ایده ی خوب دام ولی نمیدونم چطری کدش رو بنویسم
در unload فرم یه چیزثی بنویسی که یک بیت از اون فرم رو کم کنه بعد خارج بشه اون وقت دیگه ...
اما با تعویز برنامه ونصب دوباره که این عمل امکان پزیر نیست ؟؟؟
خوب یه کی توی رجیستری ایجاد کن تا ...
خوب با تعویض ویندوز چی
خوب اون وقط یک بیت از نوع بدسکتور رو هارد بنویس که اگه رو هارد وجود داشت برنامه اجرا نشه

saeid12
پنج شنبه 20 فروردین 1388, 21:21 عصر
خوب اون وقط یک بیت از نوع بدسکتور رو هارد بنویس که اگه رو هارد وجود داشت برنامه اجرا نشه

میشه این راه رو کامل توضیح بدید اگه کد یا پروژه بزارید که خیلی ممنون میشم...

scarce
جمعه 21 فروردین 1388, 17:14 عصر
میشه این راه رو کامل توضیح بدید اگه کد یا پروژه بزارید که خیلی ممنون میشم...
دوست عزیز اینجا نمیشه کد های مخرب رو اموزش داد چون مدیر سایت با دیدن این پست ممکنه این تایپیک رو حذف کنه !
چون این یکی از خطرناک ترین روش هست که ممکنه از این کد شو استفاده کنند