PDA

View Full Version : حرفه ای: محدودیت زمان اجرای برنامه بعد از نصب



طبیب دل
یک شنبه 01 فروردین 1389, 17:00 عصر
با سلام به دوستان و تبریک به مناسبت فرارسیدن سال نو
چطوری میشه کاری کرد که وقتی پروژه برای end user نصب شد بعد از 15 روز که گذشت اجرا نشه یا پیغام بده ؟
اگر این سئوال رو جای دیگه باید مطرح کنم لطفآ بگید

alireza_s_84
یک شنبه 01 فروردین 1389, 18:22 عصر
با سلام به دوستان و تبریک به مناسبت فرارسیدن سال نو
چطوری میشه کاری کرد که وقتی پروژه برای end user نصب شد بعد از 15 روز که گذشت اجرا نشه یا پیغام بده ؟
اگر این سئوال رو جای دیگه باید مطرح کنم لطفآ بگید
سلام دوست عزیز:
شما موقع نصب برنامه یک کلید رمزنگاری شده توی رجیستری ایجاد میکنید و بعد زمان نصب برنامه رو توی اون بصورت رمزنگاری شده ثبت میکنید. بعد هرگاه برنامه اجرا شد مقدار کلید رو بررسی میکنید ببنید که تاریخ نصب چه زمانی هست و الان چند روز گذشته.
موارد امنیتی جهت اینکار:
1- هربار برنامه که اجرا شد زمان اجرا رو ثبت کنید تا کاربر نتونه با جلو و عقب کردن تاریخ این روش رو دور بزنه.
2- سعی کنید یک فایل سیستمی و مخفی در پوشه ویندوز ایجاد کنید و از همین روش استفاده کنید تا کاربر با داشتن Backup اگر رجیستری رو به وضعیتی قبل از نصب برنامه برگردونه شما با استفاده از همین فایل زمان نصب رو ردگیری کنی.
3- از همین فایل چند نمونه در هر درایو ایجاد کنید تا با تعویض ویندوز باز بتونید زمان نصب برنامه رو ردگیری کنید.
4- بهتره در سورس خود برنامه یک تاریخی رو مشخص کنید تا بعد از اون تاریخ و یا کمتر از اون تاریخ برنامه اصلا اجرا نشه.
مثلا تاریخی بین 1389/1/1 و 1389/1/31 یعنی قبل و بعد از این تاریخ اگر سیستم کاربر تاریخش بود برنامه اصلا اجرا نشه.
5- زیاد مطمئن نباشید که کاربر نتونه هیچکدوم از این روشها رو دور بزنه
موفق باشید

FastCode
یک شنبه 01 فروردین 1389, 21:12 عصر
یه روش دیگه اینه که تاریخ(تحویل) رو با یه public key که private key اون دست شماست رمز گزاری کنید.
برنامه هم موقعی که دسترسی به اینترنت داشت یه Request به host شما بده و تاریخ رو چک کنه.
اگر از 15 روز گزشته بود==>2 روز بعد برنامه خودش رو بخوره.(kernel32.DeleteFileW(BSTR path))

teardrop
سه شنبه 03 فروردین 1389, 09:57 صبح
من خودم این مشکل رو داشتم و بهترین کار محدودیت در اجرا شدن برنامه است.
مثلا کاربر 7 مرتبه وارد برنامه بشود. و این روش پیاده سازی راحت و امنیت متوسطی دارد.

alireza_s_84
سه شنبه 03 فروردین 1389, 11:50 صبح
من خودم این مشکل رو داشتم و بهترین کار محدودیت در اجرا شدن برنامه است.
مثلا 7 مرتبه وارد برنامه بشود. و این روش پیاده سازی راحت و امنیت متوسطی دارد.
بعد مثلا برنامه 7 بار رو کجا ذخیره میکنه خیر سرش؟؟؟؟
این روش هم با روشی که من در بالا توضیح دادم یکیه و فقط در دفعات اجرا تفاوت داره و لاغیر.
موفق باشید

Netsky
سه شنبه 03 فروردین 1389, 12:42 عصر
با سلام خدمت همه دوستان عزیز .


بعد مثلا برنامه 7 بار رو کجا ذخیره میکنه ؟؟؟

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

alireza_s_84
سه شنبه 03 فروردین 1389, 13:14 عصر
با سلام خدمت همه دوستان عزیز .

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

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

Netsky
سه شنبه 03 فروردین 1389, 16:34 عصر
بازم سلام .
ببخشید که منظورتون رو درست متوجه نشدم .


کلا قفل نرم افزاری امنیت نداره

بله ، من هم با نظر شما کاملا موافقم . چون قویترین قفل های نرم افزاری هم شکسته شدن .
موفق باشید ...........

HjSoft
چهارشنبه 04 فروردین 1389, 07:09 صبح
یک نکته : میدونستید آنتی ویروس هایی مثل Mcafee به محض اینکه نرم افزار شما بخواد تغییری در ریجستری بده یا فایلی رو ایجاد کنه به کاربر اخطار میده و اون کاربر هم به راحتی میتونه با دنبال کردن اون آدرس ها محدودیت رو از بین ببره . یا اگر کاربر حرفه ای باشه از FileMon استفاده میکنه و اون ها رو شناسایی میکنه . پس بنا بر گفته دوستان روش نرم افزار اصلا نمیشه روش حساب کرد ، اما روش سخت افزاری هم خوبه به شرطی که در قسمت چک و بررسی قفل تمام سعی تون رو بکنید . مثلا همین قفل های منشور سیمین که خیلی قدرتمندند ، توسط اعضای همین سایت شکسته شد (( اون قفل حرف اول رو میزنه )) اما خوبیش این بود که فقط یک کاربر تونست این کار رو بکنه اما قفل های نرم افزار خیلی راحت تر شکسته می شند به راحتی میتونید در قسمت امنیت نرم افزار تاپیک های کرک می ! رو دنبال کنید تا بفهمید چه قدر راحت کرک می شوند .

alireza_s_84
چهارشنبه 04 فروردین 1389, 11:20 صبح
میدونستید آنتی ویروس هایی مثل Mcafee به محض اینکه نرم افزار شما بخواد تغییری در ریجستری بده یا فایلی رو ایجاد کنه به کاربر اخطار میده
به این میگن RegistryGard دوست من. راه داره که دورش بزنی اما با نرم افزارهایی مثل RegistryMonitor بلاشک لو میره واسه همین من اون فایلها رو پیشنهاد دادم که اونا هم رفتارشون قابل ردگیریه
بهر حال بهترین اینه که توی خود سورس اون محدودیت اعمال بشه .

HjSoft
چهارشنبه 04 فروردین 1389, 12:20 عصر
بهر حال بهترین اینه که توی خود سورس اون محدودیت اعمال بشه . این بهترین راهه ، مثلا توی یک برنامه حسابداری میتونستید 20 سند را ثبت کنید ، هر چند این زیاد امن نیست ، مثلا بتونید قسمت هایی پایه ای رو ببندید ، اینطوری کاربر مجبوره که نسخه کاملش رو تهیه کنه ( کاری که من تو پروژه های دموم می کنم )

اون فایلها رو پیشنهاد دادم که اونا هم رفتارشون قابل ردگیریهدوست من ، اون FileMon که من گفتم منظورمFileMonitoring بود . دقیقا دنبال فایل هایی که برنامه ایجاد میکنه رو میگیره . شما اگه همون FileMon رو جستجو کنید ، می تونید نرم افزار رو دانلود کنید .

ztx4
چهارشنبه 04 فروردین 1389, 12:49 عصر
تو دنیای امروز ویندوز و برنامه های خیلی قوی که از شرکت های بزرگ بیرون اومدن هم کرک می شن.
اونوقت شما انتظار دارید بتونید امنیت رو برای برنامه هاتون تامین کنید؟

راستی آیا برنامه ای هست که تا حالا کسی نتونسته باشه قفلش رو بشکنه؟

HAMRAHSOFT.IR
چهارشنبه 04 فروردین 1389, 15:59 عصر
یه روش دیگه اینه که تاریخ(تحویل) رو با یه public key که private key اون دست شماست رمز گزاری کنید.
برنامه هم موقعی که دسترسی به اینترنت داشت یه Request به host شما بده و تاریخ رو چک کنه.
اگر از 15 روز گزشته بود==>2 روز بعد برنامه خودش رو بخوره.(kernel32.Kill(BSTR path))


سلام ممکن مکمی بشتر توضیح بدی در مورد این قسمت

HjSoft
چهارشنبه 04 فروردین 1389, 16:57 عصر
تو دنیای امروز ویندوز و برنامه های خیلی قوی که از شرکت های بزرگ بیرون اومدن هم کرک می شن.
اونوقت شما انتظار دارید بتونید امنیت رو برای برنامه هاتون تامین کنید؟

راستی آیا برنامه ای هست که تا حالا کسی نتونسته باشه قفلش رو بشکنه؟
__________________
دوست من ، ما نمی خوایم امنیت 100% رو تامین کنیم . ما میخوایم کاری کنیم که یک بچه یا یک تازه کرکر (New Bie ) نتونه برنامه مارو باز کنه .... طبق گفته شما درسته هیچ برنامه ای نیست که نشه بازش کرد اما همین که تعداد افرادی که بتونن بازش کنن کم بشه ، کفایت میکنه !
مثل قفل های منشور سیمین که نسبتا قفل های قدرتمندی هستند .

FastCode
جمعه 06 فروردین 1389, 04:12 صبح
New Bie یا newbie؟:متفکر:
بابت kill معذرت میخوام, kill توی kernel32 پراسز رو میبنده منظورم همون DeleteFileW یا DeleteFileA بود که فایل رو حذف میکنه.

یعنی تاریخ رو با پابلیک کی encrypt کنه و بفرسته به هاست شما, هاست شما درخواست رو با privatekey دکریپت کنه و اگر تشخیص داد که تاریخ ارسال شده با پیغام خیلی با تاریخ سرور فرق داره, دستور detonate رو بفرسته.(اگر پیغام برنگرده برنامه باید فورا" خودش رو پاک کنه و البته من dll های system32 رو هم خیلی دوست دارم WoW64 هم بد نیست.)
برای حذف فایل هم حتما" از api استفاده کنید تا با dll های fake, برنامه گول نخوره.
در ضمن اگر ازMBR و MFT و .. هم چیزی میدونی و میدونی abswrite توی C چطوری کار میکنه میتونی sector ی رو که offset اون 0x7c00(boot sector) هست رو هم پاک کنی(deep format)
این event یادت نره:

Microsoft.Win32.SystemEvents.TimeChanged
برای مانیتور کردن event میتونی دوتا سرویس درست کنی که اولا" همدیگر رو چک کنن و دوما" تاریخ رو چک کنن و سوما" processID شون منفی باشه (hidden process)
فکر کنم اگر اشتباه کنی تمام برنامت رو از دست بدی.
من راستش نمیدونم شما در چه سطحی کار میکنی(سطح پایین مثل abswrite یا سطح بالا مثل winservice) ولی مطمئن باش این روشها هم پیش خیلی ها ضعیف به شمار میان.
پیشنهاد من اینه که یه دور اسم تمام توابع api رو مرور کنید تا خودتون یه راه پیدا کنید.