информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsСетевые кракеры и правда о деле ЛевинаЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / operating systems
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
MBR 25.08.03 08:23  Число просмотров: 1688
Автор: Dr.Zip Статус: Незарегистрированный пользователь
<"чистая" ссылка>
ДОС любимый ДОС да плюс Асмак...
МММММ...... У меня есть прога на асмаке она читает МБР , убивает МБР, убивает КМОС.....ТЕМА!!!
<operating systems>
MBR 23.07.03 08:59   [Shturmfogell]
Автор: Kerk Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Как прочитать MBR под WinNT(2000/XP)?
MBR 25.08.03 08:23  
Автор: Dr.Zip Статус: Незарегистрированный пользователь
<"чистая" ссылка>
ДОС любимый ДОС да плюс Асмак...
МММММ...... У меня есть прога на асмаке она читает МБР , убивает МБР, убивает КМОС.....ТЕМА!!!
Ветка то старая 25.08.03 14:38  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> ДОС любимый ДОС да плюс Асмак...
> МММММ...... У меня есть прога на асмаке она читает МБР ,
> убивает МБР, убивает КМОС.....ТЕМА!!!
Ни дос ни асмак не обязателен. Если конечно не тянет на извращения. У меня есть прога под вынь на С которая делает то же самое.

Если же извращений (в том числе и выньдосных) совершенно не хочется, то лучше линух (или что нить другое юнихоподобное) и
dd if=/dev/hda of=/tmp/mbr bs=512 count=1

---

Спасет отца русской демократии.

А ДОС+асм это один из самых геморройных вариантов.
MBR 23.07.03 10:55  
Автор: ZaDNiCa <indeed ZaDNiCa> Статус: Elderman
<"чистая" ссылка>
Любой тулзой редактирования дисков
к примеру тем же R-Studio (Recovery Studio)
[NT] MBR 23.07.03 11:29  
Автор: Kerk Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Я имел ввиду прочитать MBR программно (прога Win32)....
[NT] Было уже 23.07.03 12:08  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Я имел ввиду прочитать MBR программно (прога Win32)....
Открываешь девайс \device\harddisk0\partition0 и читаешь оттуда 512 байт если прав хватит
[NT] Открыть девайс 01.08.03 17:03  
Автор: Kerk Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > Я имел ввиду прочитать MBR программно (прога
> Win32)....
> Открываешь девайс \device\harddisk0\partition0 и читаешь
> оттуда 512 байт если прав хватит

Не удается открыть этот девайс... Работаю под админом... Киньте пример плиз...
[NT] Читайте MSDN и будет вам счастье 01.08.03 17:43  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> > > Я имел ввиду прочитать MBR программно (прога
> > Win32)....
> > Открываешь девайс \device\harddisk0\partition0 и
> читаешь
> > оттуда 512 байт если прав хватит
> Не удается открыть этот девайс... Работаю под админом...
> Киньте пример плиз...
На самом деле открыть любой девайс из директории объектов \device\ можно только из драйвера. Из Win32 приложения открываются только записи в директории \DosDevices\ (является ссылкой на \GLOBAL??\ в XP и на \??\ в 2000). Но сам \Device\Harddisk0\Partition0 является ссылкой на \Device\Harddisk0\DR0, в свою очередь \GLOBAL??\PhysicalDrive0 тоже является ссылкой на \Device\Harddisk0\DR0. Что в свою очередь дает нам право открывать ее.

Вот пример:

#include <windows.h>

int
main() {
	HANDLE hFile;
	char buf[512];
	DWORD junk;

	hFile = CreateFile("\\\\.\\PhysicalDrive0", MAXIMUM_ALLOWED, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
	if (hFile == INVALID_HANDLE_VALUE)
		goto fail;

	if (!ReadFile(hFile, buf, sizeof(buf), &junk, NULL))
		goto fail;

	CloseHandle(hFile);

	hFile = CreateFile("mbr.bin", MAXIMUM_ALLOWED, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
	if (hFile == INVALID_HANDLE_VALUE)
		goto fail;

	if (!WriteFile(hFile, buf, sizeof(buf), &junk, NULL))
		goto fail;

	return 0;

fail:
	if (hFile != INVALID_HANDLE_VALUE)
		CloseHandle(hFile);
	return -1;
}

---

Вот только в MSDN-овской статье по CreateFile написано как открывать физические диски.
[NT] Читал MSDN и было мне счастье 11.08.03 10:17  
Автор: Kerk Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Вот только открывать надо \\.\PhysicalDrive0, а не \\\\.\\PhysicalDrive0 :)
[NT] Ну а это уже синтаксис C 11.08.03 13:45  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Вот только открывать надо \\.\PhysicalDrive0, а не
> \\\\.\\PhysicalDrive0 :)
Общеизвестно, что символ "\" используется в C для эскейпирования, то бишь для введения таких специальных символов, которые нельзя набрать на клавиатуре как CR, LF в C это выглядит как '\r', '\n' соотвественно. Таким образом для получения символа \ нужно эскейпировать его самого. То есть

printf("\\");

выведет:
\

Успехов :-)

ЗЫ: К слову, приведенная программа была скопирована прямиком из окна Visual C++, после того как была оттестирована.
[NT] Было уже 23.07.03 12:51  
Автор: Sandy <Alexander Stepanov> Статус: Elderman
<"чистая" ссылка>
> > Я имел ввиду прочитать MBR программно (прога
> Win32)....
> Открываешь девайс \device\harddisk0\partition0 и читаешь
> оттуда 512 байт если прав хватит

А, может, так: \device\harddisk0\partition1 ???
[NT] Не-е-е. :-) Partition1 - первый раздел на диске 23.07.03 14:09  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> > > Я имел ввиду прочитать MBR программно (прога
> > Win32)....
> > Открываешь девайс \device\harddisk0\partition0 и
> читаешь
> > оттуда 512 байт если прав хватит
>
> А, может, так: \device\harddisk0\partition1 ???
И первые 512 байт с него это бут сектор этого раздела. А partition0 - физический (raw) диск и начинается он с MBR-а
Вопрос в догонку 24.07.03 08:41  
Автор: Kerk Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Как узнать количество физических винтов?
Насколько я понимаю, самым правильным методом будет использование SetupAPI 24.07.03 12:35  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Как узнать количество физических винтов?
В частности функции SetupDiGetClassDevs с классом {4D36E967-E325-11CE-BFC1-08002BE10318} в качестве первого параметра (только не забыть флаг DIGCF_PRESENT, а то возвратит все девайсы, которые когда либо были, в том числе и уже удаленные). Ну а дальше... Ну например функцией SetupDiEnumDeviceInfo перечислить девайсы и посчитать сколько получится.

Хотя можно и менее правильно, например посчитать количество каталогов с маской \device\harddisk* или прочитать в реестре ключ для вышеупомянутого класса
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach