سلام،
قدیما یه کلک بود که برای برداشتن پسورد بایوس ازش استفاده میکردیم، ولی چون این کلک توی ویندوز xp کار نمیکرد به همون قدیما محدود شد و به فراموشی سپرده شد.
کلک به این صورت بود که Bios رو گول میزدیم که فکر کنه یه Checksum error وجود داره و در این صورت خودش رو ریست میکنه پس پسورد بایوس هم میپره. برای این کار باید CMOS رو غیر معتبر کرد، به این منظور باید بدونیم چگونه به Bios دسترسی پیدا کنیم و cmos checksum کجاست تا بتوانیم آن را عوض کنیم. دسترسی به Bios با استفاده از CMOS Ports ممکن است و پورتهای آن 70 و 71 است. در اکثر (تازگی همه) مادربوردها checksum در آدرس 2e و 2f قرار دارد و پر کردن آدرس 2e با مقدار ff تمام کاری است که برای خراب کردن checksum لازم است.
لازم به ذکر است که انجام این کار شاید خطرناک باشد، اگر مشکلی پیش بیاید تمام مسئولیت به عهدهی خود شماست!
انجام این کارا در ویندوز 9x و قبل از آن بسیار بسیار ساده بود، در ویندوز 9x میشد برنامهی debug رو اجرا کرد و این دو خط رو نوشت: o 70 2e و o 71 ff. با اجرای خط اول مقدار 2e روی پورت 70 نوشته میشود و خط دوم مقدار ff روس پورت 71.
این کارها خیلی ساده به نظر میرسه، تا قبل از ویندوزهای NT همین طور بود.
حالا xp رو بررسی میکنیم: ویندوز xp اصلاً بیدر و پیکر نیست و کاملاً چفت و بست داره و با یه سیستم امنیتی که توضیحش از حوصله این بحث خارجه جلوی اجرای کدهای مهم رو به کاربر نمیده. یعنی خود ویندوز این کارو نمیکنه بلکه cpu هنگام اجرای یه کد سطح دسترسی رو چک میکنه. باید به این نکته اشاره کنم که این ربطی به دسترسیهای خود xp نداره و حتی Administrator هم نمیتواند روی یک پورت out کند. تمام اینها برای این است که سیستم عامل محافظت شود اگر هر کسی بتونه هر کدی رو اجرا کنه کوچکترین ویروس میتونه کاری که از کامپیوتر دود بلند بشه، پس امنیت چیز خوبیه!. پس توی ویندوز xp کد معمولی اجازهی دسترسی مستقیم به پورتها را ندارد پس اگر یه پروژه ++c درست کنیم و توی اون به صورت inline بنویسیم:
_asm
{
mov eax,0x2e
out 0x70,eax
mov eax,0xff
out 0x71,eax
}
نباید انتظار داشته باشیم که کار کنه چون کار نخواهد کرد.
برای کسب اطلاعات بیشتر راجع به سطوح امنیت در راهنماهای intel دنبال Privilege Level بگردید.
مدتی توی کف این بودم که چجوری میشه تو xp به سطح بالاتر دسترسی پیدا کرد که البته بعداً فهمیدم که برای این کار یه Driver مینویسند که اون به سطح بالاتر دسترسی داشته باشه، ولی چند روز پیش قبل از اینکه برم شمال توی سایت codeproject دیدم یکی یه سورس کد گذاشته که بدون درایو بشه به دسترسی بالاتر دست یافت. این سورس جرقهای زد که برنامهای برای ریست کردن cmos از داخل ویندوز xp بنویسم. قرار بود امروز که میرم شرکت اون برنامه رو ببرم ولی صبح پاشدم تازه یادم اومد. سه سوت سورس اون بنده خدا رو ورداشتم و این چند خطی که نوشتم رو یه جای مناسب اضافه کردم. کامپایل کردم و بدون اینکه تست کنم ورش داشتم بردمش. توی شرکت برای bios پسورد گذاشتیم و برنامه رو تست کردم و کار کرد.
به زودی یه برنامهی درست حسابی برای ریست کردن bios از داخل ویندوز xp مینویسم و آپلود میکنم.
اون سورس رو میتونید از اینجا پیدا کنید: Entering the kernel without a driver and getting interrupt information from APIC
فقط قول بدید که کارای بد نکنید. این سورس خیلی خطرناکه اگر برای اهداف بد استفاده بشه دردسر درست میشه. هر کاری انجام بدید خودتون مسئولید، اگر چیزی خراب بشه یا بسوزه مسئولش خدتون هستید.
موفق باشید.