PDA

View Full Version : خواندن زمان از طریق رجیستری CPU



mmha_85
یک شنبه 20 اسفند 1385, 23:16 عصر
سلام خدمت دوستان
چگونه میشه ساعت رو از روی رجیستری CPU خوند؟
همونطور که می دونید مقدار بازگشتی تابع ()now، ساعتی است که در صفحه ویندوز نشون داده می شه و اگه کاربر آن زمان را دستکاری کنه، طبعا مقدار زخیره شده در جدول هم آن مقدار دستکاری شده است ( و نه لزوما زمان واقعی)
حالا من با خواندن زمان از روی رجیستری CPU می خواستم این اجازه رو از کاربر بگیرم تا نتونه کاری کنه که زمان ثبت شده در جدول اشتباه باشه. چطور میشه این کار رو کرد؟
ممنون از راهنمایی هاتون

mazoolagh
دوشنبه 21 اسفند 1385, 08:43 صبح
رجیستری cpu رو که نمیدونم چی هست (شاید منظور شما این هست که رجیستر خاصی در cpu گنجانده شده که زمان و تاریخ واقعی رو نشون میده که اینهم فکر نمیکنم درست باشه) ولی ساعت و تاریخ کامپیوتر بطور کلی در اختیار کاربر هست. البته اگر کامپیوتر تحت یک دومین باشه میشه ساعت رو از سرور گرفت.

mmha_85
دوشنبه 21 اسفند 1385, 09:59 صبح
تا اونجایی که من می دونم (و البته ممکنه که اشتباه باشه :لبخند: ) زمان در رجیستری CPU هم گنجانده شده. (البته ممکنه در جای دیگه هم باشه) به عنوان مثال شما وقتی کامپیوتر در حال بالا آمدن است، با زدن دکمه del وارد motherboard setup میشین که در اونجا بدون اینکه شما ساعت رو تنظیم کنید، اونجا ساعت تنظیم شده است. البته قبول دارم که اون رو هم به هر حال بار اول باید تنظیم کرد. اما اون ساعت با ساعتی که در ویندوز نشون داده میشه،( در صورتی که ساعت ویندوز دستکاری شده باشه) لزوما یکی نیست.
حالا من می خوام اون ساعت رو بخونم که کاربرم نمی تونه دستکاریش کنه.
یکی از برنامه هایی که این ساعت در اون استفاده میشه، برنامه هایی هستن که دارای محدودیت زمانی هستن. به عنوان مثال شما فقط برای 10 روز می توانید برنامه را تست کنید و پس از 10 روز برنامه دیگر باز نمی شود. حتی اگر شما ساعت و تاریخ ویندوز خود را به عقب بکشید. ینابر این قاعدتا باید یک ساعت در کامپیوتر باشد که قابل دستکاری نباشد.

mazoolagh
دوشنبه 21 اسفند 1385, 10:28 صبح
اون و زمان و تاریخ در cpu ذخیره نمیشه بلکه در یک حافظه cmos نگهداری میشه که باز هم در اختیار کاربر هست. وقتی ویندوز بالا میاد ساعت و تاریخ رو از اون حافظه میخونه.
اون مورد قفل که شما میگین برنامه در اولین اجرا اون رو میخونه و معمولا داخل خود فایل اجرایی برنامه نگهداری میکنه.

mazoolagh
دوشنبه 21 اسفند 1385, 10:33 صبح
اگر ساعت مطلقی در کامپیوتر وجود داشته باشه (بالطبع در یک رجیستر فقط خوندنی) نیاز به یک منبع انرژی داخلی هم داره . نمیتونم با قاطعیت بگم چنین چیزی نیست چون از نظر فنی میشه چنین ساعتی رو تصور کرد ولی تابحال در موردش چیزی نخوندم و نشنیدم.
بهتره صبر کنیم یک نفر آگاه راهنمایی کنه.

moustafa
دوشنبه 21 اسفند 1385, 20:09 عصر
بنظر من یهتر مدت زمانی که کاربر از برنامه استفاده می کنه در یه جدول ذخیره شه وقتی جمع ان از یه مقدار مشخصی مثلا 100 ساعت تجاوز کرد کارائی خودش از دست بده
اینطوری مستقل از ساعت وزمان ویندوز یا سیستم عمل می کنه

mmha_85
دوشنبه 21 اسفند 1385, 22:02 عصر
بنظر من یهتر مدت زمانی که کاربر از برنامه استفاده می کنه در یه جدول ذخیره شه وقتی جمع ان از یه مقدار مشخصی مثلا 100 ساعت تجاوز کرد کارائی خودش از دست بده
اینطوری مستقل از ساعت وزمان ویندوز یا سیستم عمل می کنه

دوست عزیز، صورت مسئله اصلا این نیست. یه بار دیگه بخونی متوجه می شی دنبال چی هستم :چشمک:

seeker
چهارشنبه 23 اسفند 1385, 12:45 عصر
آخه تو cpu که چیزی ذخیره نمیشه
کامپیوتر یه ساعت داره که تو cmos هست و هرجایی هم که شما ساعت میبینی از روی همون ساعت میاد والسلام
حا لا اگه خواستی ساعت رو از روی ایترنت یا سرور شبکت یا gps یا هر سرور دیگه ای بخونی راه های مختلف داره

seeker
چهارشنبه 23 اسفند 1385, 12:48 عصر
اگر ساعت مطلقی در کامپیوتر وجود داشته باشه (بالطبع در یک رجیستر فقط خوندنی) نیاز به یک منبع انرژی داخلی هم داره .
cmos هم یک منبع انرژی داره و اون یک باطری روی مادر بورده
رجیستری پجیستری رو هم بریزین دور

mazoolagh
چهارشنبه 23 اسفند 1385, 13:34 عصر
من یک قید مطلق گذاشتم که با ساعت cmos تمایز داشته باشه - و منظور ساعتی بود که
1- به باطری مینبرد نیازی نداره
2- قابل تغییر و تنظیم نیست

و البته رجیستر هم به cpu برنمیگشت.

davood-ahmadi
جمعه 03 فروردین 1386, 02:47 صبح
البته ببخشید که فوزولی میکنم. ولی ما فقط و فقط یک ساعت داریم که در cmos است و منبع آن هم باطری مینبورد است و دیگر هیچ.نکته اول: اون ساعتی که هم در ویندوز می بینید هم از cmos خوانده می شود و ویندوز این قابلیت را گذاشته که وقتی شما تغییراتی در آن می دهید آن تغییرات در cmos ذخیره شود. نکته دوم اینکه در cpu اطلاعاتی از قبیل تاریخ ساخت cpu و مدل و غیره ذخیره می شود که همه اطلاعاتی که شما از آن می گیرید بیانگر مشخصات Cpu شما می باشد.

mmha_85
شنبه 11 فروردین 1386, 11:20 صبح
از تمامی توضیحاتی که دوستان دادند ممنون، خیلی چیزا یاد گرفتم. حالا می شه لطفا راهی پیشنهاد کنین (از بین تمامی این بحث ها که بین اهل فن شد و من هیچی درس حسابی ازش سر در نمیارم :لبخند: ). راهی می خوام که به ساعتی دسترسی داشته باشم که کاربرم در سطح ویندوز نتونه اون رو دستکاری کنه. حالا چه تو CPU یا cmos یا هر جایه دیگه باشه. من فقط می خوام که اون ساعت رو پیدا کنم و بتونم ازش دیتا بگیرم و توی جدولم ذخیره کنم.
ممنون از همگی

mazoolagh
شنبه 11 فروردین 1386, 21:27 عصر
خوب نتیجه این بحثها این شد که در یک کامپیوتر تکی خواسته شما نشدنی هست (اگر در سطح سیستم عامل هم شدنی باشه مثلا" با تعریف policy کاربر میتونه از راه bios تاریخ و ساعت رو تغییر بده) و باید متصل به شبکه باشه

davood-ahmadi
دوشنبه 13 فروردین 1386, 00:49 صبح
لیلی زن بود یا مرد!!!

MM_Mofidi
سه شنبه 14 فروردین 1386, 10:04 صبح
عزیزان دل دقت کنید یه کلاک داریم که تعداد کلاک های cpu در حالت روشن را میشمارد برای بازگرداندن آن هم Api هست احتمالا منظور دوستمون همون باشه برای ساخت انواع قفلهای time terial میشه ازش استفاده کرد.همینجا جستجو کنید مطالب مفصل تر و مثال پیدا میکنید.

mmha_85
سه شنبه 14 فروردین 1386, 10:16 صبح
عزیزان دل دقت کنید یه کلاک داریم که تعداد کلاک های cpu در حالت روشن را میشمارد برای بازگرداندن آن هم Api هست احتمالا منظور دوستمون همون باشه برای ساخت انواع قفلهای time terial میشه ازش استفاده کرد.همینجا جستجو کنید مطالب مفصل تر و مثال پیدا میکنید.

آقا ایول. دقیقا همینه
فقط من هم قبل از ایجاد این پست و هم الان این مطلب رو جستجو کردم. اما چیزی پیدا نکردم! میشه لطفا راهنماییم کنین؟ چیزایی که من جستجو کردم اینا بود (کلاک، کلاک CPU، ساعت ثابت، ساعت غیر قابل تغییر)
ممنونم ازتون

mmha_85
دوشنبه 20 فروردین 1386, 19:49 عصر
ما گشته ایم نبود...!!!:ناراحت: :افسرده:
شما چیزی ندیدین...؟؟؟

davood-ahmadi
سه شنبه 21 فروردین 1386, 00:44 صبح
ما گشته بودیم و گفته بودیم که نگردین .

mmha_85
جمعه 24 فروردین 1386, 02:38 صبح
MM_Mofidi ما همچنان منتظز راهنمایی شما هستیم! آقا این موضوع ظاهرا کار خودتونه. میشه یه کمکی به ما بکنین و بگین چطوری میشه این زمانی که توسط کلاک های CPU اعلام میشه رو در آورد و توی برنامه ازشون استفاده کرد؟

MM_Mofidi
شنبه 25 فروردین 1386, 13:17 عصر
این یه نمونه
http://msdn2.microsoft.com/en-us/library/ms724408.aspx

mmha_85
شنبه 25 فروردین 1386, 13:40 عصر
دوست عزیز MM_Mofidi، لینکی که گذاشته بودید رو دیدم. اما با توجه به syntax اون کدی دیدم، فکر کنم اون رو با زبونی از خانواده C نوشته بودن! :ناراحت:
با عرض معذرت و شرمندگی میشه بگین چطوری باید این کد رو تبدیلش کنم و ازش استفاده کنم تا خروجی نهاییم رو بگیرم؟

MM_Mofidi
شنبه 25 فروردین 1386, 13:49 عصر
من فقط لینک به MSDN دادم بقیه کارها قاعدتا به عهده خود شماست.
البته این تابع ایراداتی هم دارد که وقتی متن را دقیق بخوانید متوجه خواهید شد. برای مقاصد امنیتی به تنهایی قابل تکیه کردن نیست
اینم تعریف در vb

Public Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () as Long

alahazrat81
سه شنبه 14 اسفند 1386, 13:46 عصر
albate bebakhshida man az hamoon tabe now() ro dadam badesham dastresi be user ha ro mahdood kardam va kasi bejoz admin nemitoone trikho avaz kine