PDA

View Full Version : فرمت کردن یک درایو



amir master
پنج شنبه 19 بهمن 1385, 10:58 صبح
با سلام
آیا میشه با اسمبلی یه برنامه نوشت که یه درایو رو فرمت کنه ؟ مثلا درایوی که ویندوز اونجا نصب شده ؟ ممنونم

rk1983xx
شنبه 28 بهمن 1385, 23:43 عصر
سلام
اگر کسی می دونه لطف کنید بگید
اصلاً چطوری میشه با اسمبلی به جدول fat دسترسی پیدا کرد و در اون تغییرات ایجاد کرد ؟؟؟؟؟

Younes
یک شنبه 29 بهمن 1385, 08:43 صبح
خوب محل fat برروی هارد مشخص است و وقفه های کار با هارد هم همینطور لذا باید بتوان به آن دسترسی پیدا کرد.

stowmco
دوشنبه 30 بهمن 1385, 08:47 صبح
شما نمیتونید در ویندوز به صورت مستقیم با هارد در ارتباط باشد
در داس هم فکر نکنم بشه

raha_hakhamanesh
دوشنبه 30 بهمن 1385, 19:07 عصر
با سلام

دوستان در سیستم های قدیمی که پردازنده ها 386. و کمتر بود از این کارها می شد کرد ولی بعد از 386. که پردازنده ها مجهز به مد protected شدند دستورات اساسی توسط سیستم کنترل می شوند و مثلا برای انجام خیلی از کارها از توابع API که به نوعی واسط برنامه نویس و سیستم است باید استفاده کرد . البته توجه کنید بسیاری از ویروس هایی که همینک نوشته می شوند با استفاده از نقاط ضعف و یا به عبارتی با استفاده از سوراخ های ویندوز صورت می گیرد .

mazoolagh
سه شنبه 01 اسفند 1385, 09:32 صبح
شما نمیتونید در ویندوز به صورت مستقیم با هارد در ارتباط باشد
در داس هم فکر نکنم بشه

dos یک سیستم عامل کامل نبود (بخصوص از نظر مدیریت حافظه و دیسک) و عملا" محافظتی از این دو بخش انجام نمیداد و شما میتونستی مستقیما" به سخت افزار دسترسی پیدا کنی که در ویندوز اینگونه نیست.

در ویندوز هنوز هم میشه یک درایو رو فرمت کرد و این ربطی به زبان مورد استفاده نداره ولی دیگه نمیشه سیستم عامل رو بای پس کرد.

بنابراین اگر با هدف دسترسی مستقیم به سخت افزار میخواهید از اسمبلی استفاده کنید، تفاوتی با یک زبان سطح بالا نخواهد داشت.

amir master
پنج شنبه 03 اسفند 1385, 17:50 عصر
حالا میشه یا نمیشه؟ (یک کلام)
من شنیدم با اسمبلی هر کاری میشه انجام داد !
نظر شما چیه؟:متفکر:

amir master
سه شنبه 15 اسفند 1385, 09:57 صبح
دوستان عزیز لطفا نظر بدید!!!
:ناراحت:

american_iran2006
سه شنبه 15 اسفند 1385, 12:37 عصر
من میتونم دستوره commandi تو ویندوز بگم

اما دو تا شرط داره

1-یک درایو ویندوزو نمیتونه پاک کنه

2- درایو هایی که ntfs هم باشن نمیتونه

دستور اینه ::

format "drive":\q

اینو تو اونجایی که میخوای یک shortcut درست کنی(یا ادرس بدی) وارد کنید ::

Best Programmer
چهارشنبه 16 اسفند 1385, 00:08 صبح
ببخشید چند روزی به دلایل مشغله کاری نمی تونستم بیام به سوالات شما جواب بدم


شما نمیتونید در ویندوز به صورت مستقیم با هارد در ارتباط باشد
در داس هم فکر نکنم بشه

نمی دانم کی به شما این حرف را زده است هر چیزی راهی داره.
ولی تو داس کاملا اشتباه تصور می کنید کاملا دسترسی مستقیم به کل I/O دارید.



dos یک سیستم عامل کامل نبود (بخصوص از نظر مدیریت حافظه و دیسک) و عملا" محافظتی از این دو بخش انجام نمیداد و شما میتونستی مستقیما" به سخت افزار دسترسی پیدا کنی که در ویندوز اینگونه نیست.

در ویندوز هنوز هم میشه یک درایو رو فرمت کرد و این ربطی به زبان مورد استفاده نداره ولی دیگه نمیشه سیستم عامل رو بای پس کرد.

بنابراین اگر با هدف دسترسی مستقیم به سخت افزار میخواهید از اسمبلی استفاده کنید، تفاوتی با یک زبان سطح بالا نخواهد داشت.

بازم اشتباه اگر فکر کنبد داس یک سیستم عامل کامل نبوده (لطفا دلیل بیارید)
داس بر اساس معماری 8086 نوشته شده است که اتفاقاCPU بسیاری امکانات و قابلیت ها را نداشت.
در باره کاربرد های اسمبلی قبلا به تفضیل بحث شده است اگر سوالی داری می تونی جداگونه بحث کنیم.


دوستان در سیستم های قدیمی که پردازنده ها 386. و کمتر بود از این کارها می شد کرد ولی بعد از 386. که پردازنده ها مجهز به مد protected شدند دستورات اساسی توسط سیستم کنترل می شوند و مثلا برای انجام خیلی از کارها از توابع API که به نوعی واسط برنامه نویس و سیستم است باید استفاده کرد . البته توجه کنید بسیاری از ویروس هایی که همینک نوشته می شوند با استفاده از نقاط ضعف و یا به عبارتی با استفاده از سوراخ های ویندوز صورت می گیرد .

لطفا این سیستم را تعریف کنید!اگرم منظورتون bit mode هست یه سوال ازتون می کنم ،پس چرا در داس که تا 486 ، 586 همه هنوز استفاده می کردند Int21 , int13 عمل می کرد؟
سوما این موضوع چه ربطی به ویروس و API داره ، و کارکرد ویروس چه ربطی به vulerability ها داره؟ و API ها فقط در USER MODE هستند(البته الان ممکنه بعضی دوستان جبهه بگیرند ولی منظور من Native API های سطح کرنل نیست)


حالا میشه یا نمیشه؟ (یک کلام)
من شنیدم با اسمبلی هر کاری میشه انجام داد !
نظر شما چیه؟
سوال شما چند تا مشکل داره :
1: شما آخر نگفتید می خواهید با چه سیستم عاملی این کار را انجام بدهید؟
2: منظورتون با هر کاری چیه؟ مثلا طراحی یک برنامه حسابداری هست؟ خوب می تونه ولی هیچ آدم عاقلی نمیاد لقمه را 1000 دور دور سرش بچرخونه!!!

ولی حالا اگر شما از داس (منظورم داس 6.22 هست) می خواهید استفاده کنید Int13 , ah=05h { برای اطلاعات بیشتر ص 435 -443 کتاب مرجع برنامه نویسان سیستم های PC مراجعه نمایید - البته کتاب من چاپ دوم 1374 هست،نمی دونم اصلا این کتاب الان اصلا چاپ میشه یا نه)
ولی اگر منظورتون از داس همین Command Prompt خودمونه (VMD (http://www.barnamenevis.org/forum/showpost.php?p=311978&postcount=2)
بهتر هست همین SHFormatDrive (http://msdn2.microsoft.com/en-us/library/ms647748.aspx) را بکار ببری.
لطفا هم درباره دسترسی مستقیم به I/O تحت ویندوز سوال نکن ! ان شا.. که یه پا استاکار شدی تشریف بیار همین فروم دوستان و مدیران با سوادی همین جا هستند که واقعا کمک شایانی می تونند بهت بکنند.
دوستان من نظری به شخصی ندارم و فقط سعی می کنم چیز هایی که اشتباه درک کردید را بیان کنم که بعدا با مشکل بر نخورید وگر نه من خودم هیچی بلد نیستم.

netspc
چهارشنبه 16 اسفند 1385, 04:26 صبح
دوستان در سیستم های قدیمی که پردازنده ها 386. و کمتر بود از این کارها می شد کرد ولی بعد از 386. که پردازنده ها مجهز به مد protected شدند دستورات اساسی توسط سیستم کنترل می شوند و مثلا برای انجام خیلی از کارها از توابع API که به نوعی واسط برنامه نویس و سیستم است باید استفاده کرد . البته توجه کنید بسیاری از ویروس هایی که همینک نوشته می شوند با استفاده از نقاط ضعف و یا به عبارتی با استفاده از سوراخ های ویندوز صورت می گیرد .

سلام منظور شما چی بوده من نمیدونم ولی در pmode هم میشود از وقفه های سخت افزاری و دستورات مستقیم I/O استفاده کردن.
فکر کنم شما میخواستی بگی privilege mode و یا همون RING 3 ... بله در این حلقه کاربر نمیتواند کاری به کار سخت افزار داشته باشد و این بحث هم بیشتر برمیگردد به سیستم عامل و نه real mode و pmode
در واقع از pmode برای دسترسی به فضای حافظه بیش از یک مگ استفاده میشود و در واقع سگمنت بندی در Pmode تغییر میکند و همینطور نحوه دسترسی به آدرس ها حافظه.
در ضمن در ms-dos بوسیله نرم افزارهایی مانند DPMI ،EMS،QEMM و چندتای دیگه شما به pmode شیفت میکنید ولی هنوز میتوانید از دسترسی مستقیم به I/O بهره مند شوید.


لطفا این سیستم را تعریف کنید!اگرم منظورتون bit mode هست یه سوال ازتون می کنم ،پس چرا در داس که تا 486 ، 586 همه هنوز استفاده می کردند Int21 , int13 عمل می کرد؟
سوما این موضوع چه ربطی به ویروس و API داره ، و کارکرد ویروس چه ربطی به vulerability ها داره؟ و API ها فقط در USER MODE هستند(البته الان ممکنه بعضی دوستان جبهه بگیرند ولی منظور من Native API های سطح کرنل نیست)

شما هنوز هم میتونید از همون وقفه هایی که خودتون نام بردید در محیط داس استفاده کنید لطفا فعلهای گذشته رو به فعلهای حال برگردونید :لبخند:


حالا میشه یا نمیشه؟ (یک کلام)
من شنیدم با اسمبلی هر کاری میشه انجام داد !
نظر شما چیه؟

شدن که میشه ولی بستگی داره چقدر تجربه داشته باشی و در مورد سخت افزار مربوطه چه اطلاعاتی داشته باشی.
اول از همه شما اطلاعات در مورد درایور هارد دیسک مورد نظر رو باید شناسایی کنی.
در محیط ویندوز باید به ring 0 سوئئچ کنید و بوسیله masm و DDK ویندوز برنامه فورمت خود را بنوسید برا اطلاع بیشتر میتونید به کتاب assembly programming master نوشته Vlad Pirogov
رجوع کنید فصل آخر در مورد برنامه نویسی ring 0 میباشد(نوشتن یک درایور).
در محیط داس خب به دلیل نبود privilege mode شما به راحتی میتوانید به سخت افزار دسترسی پیدا کنید و اینکه در داس به دلیل قدیمی بودن شما برای مثال بطور مستقیم نمیتوانید با هاردهای اسکازی و یا ساتا کار کنید مگر اینکه درایور مخصوص اینکار رو در اختیار داشته باشید.
روزش خوش.

Best Programmer
چهارشنبه 16 اسفند 1385, 13:58 عصر
جناب آقای netspc
اگر منظورتان از داس همین VMD (http://www.barnamenevis.org/forum/showpost.php?p=311978&postcount=2) خودمون هست که دیگه بهش داس نمی گویند!!!
و صحبتی که من کردم این بوده که "پس چرا در داس که تا 486 ، 586 همه هنوز استفاده می کردند" پس دیگه الان کسی نمی آیید داس کار کنه پس افعال به گذشته بر می گردد.
"رجوع کنید فصل آخر در مورد برنامه نویسی ring 0 میباشد(نوشتن یک درایور)."
من این کتاب را خوانده ام و به شما خودآموز های iczelion را معرفی می کنم تا اطلاعات بیشتری در آن زمینه پیدا کنید. چرا گفتم آن زمینه ؟ چون VXD دیگر در ویندوز 2K و xp و ... مرده است و جای آن را WDM گرفته است.

amir master
چهارشنبه 16 اسفند 1385, 16:26 عصر
:چشمک: من از همه دوستان تشکر میکنم و امیدوارم منو ببخشید
راستش من زیاد اسمبلی نمیدونم و فقط ترم قبل سه واحد داشتم و وسلام
به هر حال ممنونم

mazoolagh
پنج شنبه 17 اسفند 1385, 12:55 عصر
dos یک سیستم عامل کامل نبود (بخصوص از نظر مدیریت حافظه و دیسک) و عملا" محافظتی از این دو بخش انجام نمیداد و شما میتونستی مستقیما" به سخت افزار دسترسی پیدا کنی که در ویندوز اینگونه نیست.

در ویندوز هنوز هم میشه یک درایو رو فرمت کرد و این ربطی به زبان مورد استفاده نداره ولی دیگه نمیشه سیستم عامل رو بای پس کرد.

بنابراین اگر با هدف دسترسی مستقیم به سخت افزار میخواهید از اسمبلی استفاده کنید، تفاوتی با یک زبان سطح بالا نخواهد داشت.



بازم اشتباه اگر فکر کنبد داس یک سیستم عامل کامل نبوده (لطفا دلیل بیارید)
داس بر اساس معماری 8086 نوشته شده است که اتفاقاCPU بسیاری امکانات و قابلیت ها را نداشت.
در باره کاربرد های اسمبلی قبلا به تفضیل بحث شده است اگر سوالی داری می تونی جداگونه بحث کنیم.


خوب ، طبق تعریف یکی از ویژگیهای سیستم عامل ایزوله کردن سخت افزار از کاربر هست که داس این توانایی رو نداشت. حال این که ریشه این موضوع در ساده بودن 8086 نهفته باشه چیزی از کلیت موضوع کم نمیکنه.

netspc
پنج شنبه 17 اسفند 1385, 13:37 عصر
سلام best porgrammer
نه منظورم VMD نبود ، اگر دوباره متن رو بخونی میفهمی منظور همون داس اصلی بود.
در مورد wmd بله از ویندوز 98 به بعد از vxd استفاده نمیشه میدونستم (فکر کنم باید میگفتم برنامه نویسی درایور با اسمبلی و سی)
به هر حال ممنون.

mahdi_akhavan
چهارشنبه 23 خرداد 1386, 00:58 صبح
اونی که کاربران دیگه گفتند درست ولی اون در مورد کار با پورتها بود مامیتونیم هارد را فرمت کنیم ولی بعد از فرمت ویندوز فرمت ما رو نمیشناسه چون در وقفه فرمت حافضه بازه وجود دارد نه مبدا و مقصد یعنی شما فقط میگید که تا کجا فرکت کن به همین جهت trake صفر رو هم فرمت میکنه و fat table رو هم از بین میبره پس ما باید ابتده trak صفر رو تو یه فایلی بنویسیم تا بعد از فرمت دوباره آن را در trak صفر ذخیره کنیم تا ویندوز هم فرمت ما رو بشناسه .
که این کاره تقریبا سختیه ولی میشه انجامش داد.