PDA

View Full Version : گفتگو: ثبت اطلاعات بدون پاک شدن



shytonak
جمعه 02 مرداد 1388, 14:36 عصر
سلام دوستان حتما بیشترتون با برنامه System Mechanic آشنا هستین.
من یه بار چند سال پیش قبل از اینکه کرکشو گیر بیارم داشتم ازش استفاده میکردم که نکته جالبی دیدم که مثل بقیه برنامه ها نیست که با عوض کردن ویندوز که درایو C فرمت میشه تایمرش صفر بشه.حتی یه بار کل هارد رو فرمت کردم و بعد از نصب دیدم که باز تایمرش صفر نشده.واسم جالبه بدونم که اطلاعات مربوط به تایمر کجا ذخیره شدن که حتی با فرمت کردن هارد پاک نشدن.
اگه کسی از دوستان می دونه ممنون میشم راهنمایی کنه.
با تشکر

alireza_tavakol
جمعه 02 مرداد 1388, 16:09 عصر
حالا این مطلبی که میگم در حد تخیله ولی ...

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

اگه تونستی راهی پیدا بکنی در این زمینه من رو هم بی نسیب نگذار:گریه:

Reza_Yarahmadi
جمعه 02 مرداد 1388, 18:02 عصر
یکبار استادمون موضوع یکی از پروژه های دوره دانشجوییش رو تعریف کرد که همین کاری که شما میخواید رو قرار بود انجام بدن، یعنی اطلاعاتی رو روی دیسک ذخیره کنن که حتی با فرمت کردن هم پاک نشه.
روشی که برای انجام این کار استفاده کرده بود تقریبا به این صورته:
باید اطلاعات با فرمتی که برای ویندوز قابل شناسایی نیست نوشته بشه چیزی مثل فرمت اطلاعات ذخیره شده در بایاس، اطلاعات مورد نظرش رو مستقیما در یک آدرس خاص از دیسک (سکتور خاص) ذخیره کرده بود.
البته اینم اضافه کنم که اونها یه گروه چند نفره بودند و تعداد زیادی فلاپی اون زمان خراب کردن تا تونستن این کارو انجام بدن!!

shytonak
جمعه 02 مرداد 1388, 20:26 عصر
یه فکری به ذهنم رسید شاید تا حالا توجه شدین که وقتی ویندوز رو پارتیشن بندی می کنید نمیشه همه فضای هارد رو پارتیشن بندی کرد.
یعنی اگه شما 40 گیگا بایت حافظه داشته باشید نمی تونید به 5 تا 8 گیگ تقسیم کنید.و در نهایت می بینید در حد چند مگ رو نتونستید استفاده کنید.
خوب این فضای باقی مونده چی میشه؟!!!!!!
اگه بشه روی این فضا اطلاعات ذخیره کرد میشه تا حدودی این کار رو انجام داد و یه قدم نزدیک تر شد.
اما اگه کل هارد رو از نوع پارتیشن بندی کنیم اطلاعات پاک میشه.
حالا دوستان راهی بلندن که چطور تو این فضای باقی مانده اما کوچک که واسه ویندوز هم قابل شناسایی نیست اطلاعات رو ریخت و چطور برنامه رو اجرا کرد؟!!!!!

Open-Source
شنبه 03 مرداد 1388, 10:25 صبح
اگه هارد رو fdisk هم بکنی بازم صفر نمیشه؟؟!!!!!!!!
در مورد فرمت میشه یه کاریش کرد(مثلا اطلاعات رو توی سکتور0 که معروف به MBR هست ذخیره کنی)

ولی اگه بعد از fdisk یا format /mbr شمارنده صفر نشد بی شک درون bios ذخیره شده.

شما یه بار باطری mb رو در بیار ببین صفر میشه؟؟؟

:متفکر::متفکر:

Unknownlive
شنبه 03 مرداد 1388, 10:34 صبح
الان دیگه نمیشه چون شما باید اطلاعات را در ابتدا سکتور هارد بنویسید قدیما سیستم عامل کنترلی رو اون قسمت نداشت و ویروس ها سوئ استفاده می کنند حالا مایکروسافت اون قسمت را تحت اختیار سیستم عامل خودش در اورده و یک رابط بین برنامه نویسان و بخش های سخت افزاری گذاشته که اون قسمت مربوط به API ها میشه یعنی اگه شما می خواهید چیزی را به اون قسمت ارسال کنید باید ابتدا به API مربوطه ارسال کنید بعد API چک می کنه که کار شما مخرب امیز هست یا خیر اگر جواب نه بود می زاره اطلاعات را بریزین حالا شما باید دنبال API بگردید منبع این حرف استادمون در درس مباحث ویژه بود

shytonak
یک شنبه 04 مرداد 1388, 18:47 عصر
باتری هم در بیاری اطلاعات مربوط به شمارنده پاک نمی شه.
البته تو سری جدید این برنامه امتحان نکردم.

خوب دوست من میشه از استادتون بپرسی که چطور با این API که میگه ارتباط برقرار کنیم؟!!!

alireza_tavakol
یک شنبه 04 مرداد 1388, 20:21 عصر
حافظه رو MB دو دسته است

1- CMOS که با برداشتن باتری این حاظه پاک میشه
2- BIOS Chip که همون ROM در کامپیوتر های قدیمیه که امروزه به EEPROM تبدیل شده ( این حافظه هیچ گاه پاک نمیشه مگه اینکه عملیات flash رو انجام بدی )

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

shytonak
دوشنبه 05 مرداد 1388, 11:32 صبح
خوب پس نظر شما اینه که تو حافظه bios اطلاعات رو ذخیره کنیم.
اما حالا چطور اطلاعات رو بریزیم توش و چطور باهاش ارتباط بر قرار کنیم.
در ضمن اگه این کار اشتباه صورت بگیره و حافظه bios با مشکل رو برو بشه کلی مشکل ایجاد میشه که خودتون بهتر میدونید.

alireza_tavakol
دوشنبه 05 مرداد 1388, 16:26 عصر
تا اونجایی که عقل من قد میده هیچ قاعده کلی برای برنامه نویسی سخت افزاری وجود نداره ! یعنی شما هیچ گاه یه برنامه کلی واسه flash کردن همه chip ها پیدا نمیکنی این مسئله تا حدی جلو میره که مثلا شرکت گیگا بایت (یکی از تولید کننده گان بزرگ مادر برد در دنیا )برای Update کردن BIOS مادر برد هایی که تولید کرده نرم افزار های مختلفی ارائه داده.

حالا چرا این اتفاق می افته :

1- اندازه ماژول های حافظه ای که تولید شده متفاوته
2- در برنامه نویسی سخت افزاری برنامه نویس سطح ولتاژ ورودی را تعیین میکنه و در Chip های مختلف سطح ولتاژ حقیقی تعریف شده برای صفر منطقی و یک منطقی متفاوته
3- برای ارسال اطلاعات به ماژول های حافظه باید ورودی های اولیه را مقدار دهی بکنی تا اطلاعات در مقصد ذخیره شود والا به ظاهر اطلاعات ارسال میشود ولی اعمال نمیگردد
4- و...

پس شما حداکثر تلاشی که می تونی بکنی اینکه برای یک مدل خاصی از بایس ها می تونی برنامه تولید بکنی نه برای همه آن ها ( محدود شدن به پلتفرم سخت افزاری خاصی )

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

نکات قابل توجه در این زمینه
الف ) امکان تغییر جزیی برو حافظه های EEPROM غیر ممکن است یعنی در هنگام عمل flash باید کل حافظه مقدار دهی شود بنابراین شما باید قبل از اعمال تغییرات یک نسخه کامل از حافظه بایس را خوانده سپس تغییراتی را که می خواهید بروی این اطلاعات اعمال نمایید و مجددا" کل حافظه را باز نویسی کنید
ب ) برای انجام چنین کاری نیاز به یک مادر برد Dual BIOS دارید تا در صورت بروز مشکل توسط Backup BIOS سیستم را به حالت قبل برگردانید
ج ) به عنوان یک پیشنهاد شما اول یک حافظه AVR بخر با یک دستگاه Writer ولی از نرم افزار های موجود استفاده نکن برای نوشتن اطلاعت روی چیپ و خودت با ++C یک نرم افزار طراحی کن که اطلاعت رو روی پرت سریال ارسال کنه تا دستگاه رایتر اطلاعت رو روی چیپ بنویسه بعد شما توی این تمرین یاد میگیری چطوری آدرس دهی کنی اطلاعات رو ، در نهایت اقدام به انجام کار های سخت تر بکن

موفق باشید/

Unknownlive
دوشنبه 05 مرداد 1388, 20:10 عصر
ریختن در حافظه بایوس در واقع یک کار غیر ممکن و دیوانگی است چون برنامه را دچار مشکل می کنه شما باید اطلاعات را در سکتور های ابتدای بریزید بوت های سیستم عامل هم این جوری بوت می شن