ریبوت سیستم به وسیله کد c++ ؟

dvbhot

New Member
سلام
ببخشید تاپیک جدا زدم.ولی هرچی گشتم نتونستم چنین موضوعی رو پیدا کنم.
استاد ما گفته که یکی از بچه ها تونسته با یک خط کد در c++ کامپیوترو ریبوت کنه(البته include هم داشته) ولی نگفت کی و چه کدی!:mad:
خیلی توی اینترنت سرچ کردم ولی چیزی پیدا نکردم.
از دوستان کسی هست یه همچین کدی رو برای C++ بشناسه معرفی کنه.نمره ام به این کد بسته است.
ممنون:rose:
 

the_king

مدیرکل انجمن
سلام
ببخشید تاپیک جدا زدم.ولی هرچی گشتم نتونستم چنین موضوعی رو پیدا کنم.
استاد ما گفته که یکی از بچه ها تونسته با یک خط کد در c++ کامپیوترو ریبوت کنه(البته include هم داشته) ولی نگفت کی و چه کدی!:mad:
خیلی توی اینترنت سرچ کردم ولی چیزی پیدا نکردم.
از دوستان کسی هست یه همچین کدی رو برای C++ بشناسه معرفی کنه.نمره ام به این کد بسته است.
ممنون:rose:

وقتی کامپیوتر رو روشن می کنید پردازنده شروع به اجرای کد هایی می کنه که مربوط به حافظه BIOS مادربورد ئه. به آدرس اولین کدی که از این حافظه اجرا میشه
می گویند Reset Vector چون اگر برای اجرای کد به اون موقعیت پرش بشه همه روالی که موقع روشن شدن سیستم پردازنده اجرا می کرد از نو اجرا میشه.
در سیستم عامل ویندوز، پرش به این آدرس به دو دلیل عملی نیست، اول اینکه ویندوز به برنامه های عادی این اجازه رو نمیده و باید از طریق توابع API ویندوز،
سیستم عامل Restart بشه. و ثانیا کد های داخل BIOS در حالت آدرس دهی Real Mode اجرا می شوند. در ویندوز برنامه ها در حالت آدرس دهی Protected Mode
اجرا می شوند که به کلی تفاوته.

در سیستم عامل DOS این دو عامل مشکل ساز وجود نداره و پرش به اون آدرس Reset Vector میسر است :
کد:
void main()
{
    (*(void (far *)(void))0xffff0000L)();
}
 

dvbhot

New Member
وقتی کامپیوتر رو روشن می کنید پردازنده شروع به اجرای کد هایی می کنه که مربوط به حافظه BIOS مادربورد ئه. به آدرس اولین کدی که از این حافظه اجرا میشه
می گویند Reset Vector چون اگر برای اجرای کد به اون موقعیت پرش بشه همه روالی که موقع روشن شدن سیستم پردازنده اجرا می کرد از نو اجرا میشه.
در سیستم عامل ویندوز، پرش به این آدرس به دو دلیل عملی نیست، اول اینکه ویندوز به برنامه های عادی این اجازه رو نمیده و باید از طریق توابع API ویندوز،
سیستم عامل Restart بشه. و ثانیا کد های داخل BIOS در حالت آدرس دهی Real Mode اجرا می شوند. در ویندوز برنامه ها در حالت آدرس دهی Protected Mode
اجرا می شوند که به کلی تفاوته.

در سیستم عامل DOS این دو عامل مشکل ساز وجود نداره و پرش به اون آدرس Reset Vector میسر است :
کد:
void main()
{
    (*(void (far *)(void))0xffff0000L)();
}

ممنون دوست عزیز
من این کدو توی cpp اجرا کردم.
میخواد بره برای ریست ولی فقط برنامه رو میبنده که اگه اشتباه نکرده باشم به خاطر همون protect mode ویندوز باید باید باشه.
هیچ راهی نیست بشه این protect mode رو دور زد؟
 

the_king

مدیرکل انجمن
ممنون دوست عزیز
من این کدو توی cpp اجرا کردم.
میخواد بره برای ریست ولی فقط برنامه رو میبنده که اگه اشتباه نکرده باشم به خاطر همون protect mode ویندوز باید باید باشه.
هیچ راهی نیست بشه این protect mode رو دور زد؟

به هیچ وجه، در ویندوز برنامه های عادی نه مجاز به تغییر حالت آدرس دهی پردازنده اند و نه مجاز به اجرا کردن روتین های bios. اگه اینکار عملی بود
هر ویروس ساده ای در یک لحظه اینکار رو انجام می داد. در ویندوز هر کاری که مربوط به سیستم باشه باید با مجوز و تحت نظارت سیستم عامل انجام بشه،
هر کاری هم عملی نیست، فقط کارهایی که ویندوز سرویسی برایش ارائه می کنه.
 

جدیدترین ارسال ها

بالا