ورود

View Full Version : سوال: يك اشكال در كار با CpuID



سعید حمیدیانفر
یک شنبه 24 شهریور 1387, 08:28 صبح
با سلام
من تو برنامه هام معمولا از اين DLL معروف utility.dll استفاده مي كنم (براي گرفتن شماره سريال CPU )


declare string CpuID IN utility.dll
?cpuID()


اما جديدا تو اكثر CPU ها يه رفتار غير منتظره ازش ديدم كه يه مقدار عملكرد قفلهاي نرم افزارها رو چار اشكال ميكنه . بعنوان نمونه عملكرد اين تابع رو تو يه حلقه for ده بار چك كردم به اينصورت


declare string CpuID IN utility.dll
for i=1 to 10
?cpuID()
next i

ونتيجه به اين شكل بود


00E3FD208006FB
00E3FD208006FB
00E3FD10208006FB
00E3FD10208006FB
00E3FD10208006FB
00E3FD10208006FB
00E3FD10208006FB
00E3FD10208006FB
00E3FD10208006FB
00E3FD208006FB

به نظر شما علت اين رفتار غير عادي چيه و راه حل اين مشكل چيست؟

NewFoxStudent
یک شنبه 24 شهریور 1387, 12:00 عصر
تو قسمت Device Manager گزینه Processor رو نگاه کنید
ببینید چند تا CPU شناخته
احتمالا باید دو تا باشه

NewFoxStudent
یک شنبه 24 شهریور 1387, 12:31 عصر
این Dll مقادیر رو از رجیستری سیستم میخونه
به همین دلیل برای ساختن قفل نرم افزاری به هیچ عنوان مناسب نیست
مقادیری که این تابع بر میگردونه برای یه برنامه نویس متوسط هم کاملا قابل دسترس

سعید حمیدیانفر
دوشنبه 25 شهریور 1387, 08:16 صبح
خيلي ممنون از راهنماييتون
من جواب سوالم رو گرفتم
اما براي اينكه اين تاپيك يه خورده مفيدتر بشه از دوستان خواهش مي كنم روشهاي پيشنهادي خودشون رو بصورت عملي براي گرفتن اطلاعات CPU بدن
با تشكر

ashkan_gorg
دوشنبه 25 شهریور 1387, 08:51 صبح
من فکر می کنم dll یا ocx هایی که برای پیداکردن سریال سی پی یو به کار می روند همشون محدود هستند به خاطر اینکه cpuهایی که جدیدترمیایند شاید روش ایجاد شماره سریال در آنها متفاوت باشد به این خاطرآن کنترل قبلی در بقیه سیستم ها اشتباه عمل میکند.شایدهم من اشتباه کنم پس باید دنبال راه حلی گشت که متفاوت ازاین ها باشد

NewFoxStudent
دوشنبه 25 شهریور 1387, 09:16 صبح
برنامه نویسان اسمبلی روشهای مختلفی برای بدست آوردن یه کد یونیک از سی پی یو دارند
که البته خیلی پیچیده است
من چند تا از این روشها رو هرچی مطالععه کردم چیزی متوجه نشدم
فقط این رو میدونم که تمام سی پی یو ها واحد هایی از حافظه دارند که یه سری اطلاعات مربوط به سازنده
تاریخ تولید ، مدل و ....... رو نگهداری میکنند
این واحد های حافظه توسط توابع سطح پایین زبان C و یا دستورات اسمبلی به سختی قابل دسترس هستند و قابل تغییر هم نیستند
برای ساختن قفل به نظر من بهترین روش استفاده از این اطلاعات به همراه سریال هارد هست
ولی استفاده از کنترلهای آماده مطمئنا پاسخگو نیست

IC_prog
دوشنبه 22 مهر 1387, 10:21 صبح
برای ساختن قفل به نظر من بهترین روش استفاده از این اطلاعات به همراه سریال هارد هست

آیا شما یا دیگر اساتید روشی برای بدست آوردن سریال هارد بدون اجرای
RUN DIR
یا
RUN VOL
در ویندوز سراغ دارید.آیا DLLیا OCX در این زمینه هست اگر جواب مثبته از کجا باید تهیه کرد.
چون عمل run موجب باز شدن یک window سیاه در هر بار اجرای برنامه میشه(cmd) که جلوه خوبی نداره.

سعید حمیدیانفر
دوشنبه 22 مهر 1387, 11:24 صبح
DECLARE String HardSerialNumber IN HSN.dll
?HardSerialNumber()


اين هم نمونه كد براي عدم نمايش پنجره سياه


RUN /n7 cacl.exe

IC_prog
دوشنبه 22 مهر 1387, 13:49 عصر
جناب حمیدیانفر با تشکر از محبتی که نمودید. یک سئوال :
1- با دستور VOL سریال یک درایو نمایش داده میشود ولی با dll که معرفی کردید ظاهرا یریال خود هارد نمایش داده میشود. آیا سریال نمایش داده شده همان سریالی است که بر روی هارد برچسب خورده ؟
2- آیا مقادیر Drive Controller Revision Number__:
و Computer ID_______________________:
همواره در هر سیستمی متغیر است یا ثابت و اصولا آیا استفاده از : Drive Serial Numbe
جهت قفل نرم افزار کافیست (منظورم اینه که آیا ممکنه که دو هارد مقدار Drive Serial Number یکسانی داشته باشد)

rezaTavak
سه شنبه 23 مهر 1387, 07:47 صبح
سریال هارد سخت افزاری است و VOL سریال پارتیشن است که در هنگام فرمت تاریخ فرمت در آن قرار می گیرد.

سعید حمیدیانفر
سه شنبه 23 مهر 1387, 08:27 صبح
با عرض سلام و ادب


آیا سریال نمایش داده شده همان سریالی است که بر روی هارد برچسب خورده ؟

همونطور كه حتما خودتون بررسي كردين
اين DLL كه استاد عزيزم جناب آقاي توكلي (rezaTavak) زحمتشو كشيدن هم سريال هارد رو ميده و هم سريال درايوي كه برنامه از روي اون اجرا ميشه
و در نهايت هم يك Computer ID توليد ميكنه كه تلفيقي از سريال هارد ، سريال درايو و ساير مشخصاتي كه در مورد هارد شما وجود داره توليدميشه .



آیا ممکنه که دو هارد مقدار Drive Serial Number یکسانی داشته باشد

در اين مور هم احتمالش شايدزيادنباشه اماغير ممكن نيست . بعلاوه اگه كسي بخواد همچين قفلي رو بشكنه فقط كافيه يه Image از درايو شما بگيره و برنامه رو براحتي كپي كنه چون در اي صورت تمام مشخصات درايو كپي ميشه.