Понедельник, 30.12.2024, 20:52 Приветствую вас Гость | Группа "Гости" 
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Волк-1024, Anton93, xXxSh@dowxXx  
Как физически скопировать кластера с жёсткого диска?
NeoДата: Четверг, 19.05.2011, 14:47 | Сообщение # 1
Модератор
Зарегистрирован: 04.05.2010
Группа: Модераторы
Сообщений: 317
Статус: Offline
Всем Привет!Люди,может кто-нибудь знает как с помощью Delphi физически скопировать кластера с жёсткого диска,например как это делает WinHex.Вообще-то я хочу скопировать sam/system.Я видел коды с Wasma,но они на C и (лично у меня) не работают.Может кто чего посоветует?
 
dolphinДата: Четверг, 19.05.2011, 15:56 | Сообщение # 2
Администратор
Сообщений: 906
Статус: Offline
Что за файлы? Где лежат? Желательно под семёркой, для актуальности.

Система: Windows 10 x64, Kali Linux
Среды программирования: Delphi 7, Delphi 10.x

Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
 
NeoДата: Четверг, 19.05.2011, 16:43 | Сообщение # 3
Модератор
Зарегистрирован: 04.05.2010
Группа: Модераторы
Сообщений: 317
Статус: Offline
Лежат они :windows\system32\config,думаю,вы уже поняли что это и зачем они мне....
 
C@TДата: Четверг, 19.05.2011, 17:10 | Сообщение # 4
Авторитетный
Зарегистрирован: 06.03.2010
Группа: Модераторы
Сообщений: 265
Статус: Offline
я уже когдато писал

Code
f1 := CreateFileA('\\.\PhysicalDrive0',GENERIC_ALL,FILE_SHARE_WRITE + FILE_SHARE_READ,0,OPEN_EXISTING,0,0);       
     buf := NewLoader;//заполняем буфер     
     WriteFile(f1,buf,512,nw,0);     
     CloseHandle(f1);  

меняеш WriteFile(f1,buf,512,nw,0); на ReadFile(f1,buf,512,nw,0); и для указания нужного смещения на винте(в байтах) юзай SetFilePointer


 
NeoДата: Четверг, 19.05.2011, 17:41 | Сообщение # 5
Модератор
Зарегистрирован: 04.05.2010
Группа: Модераторы
Сообщений: 317
Статус: Offline
А как тогда определить в каком именно секторе находится sam,чтобы потом его скопировать?
 
dolphinДата: Четверг, 19.05.2011, 20:18 | Сообщение # 6
Администратор
Сообщений: 906
Статус: Offline
Вот пример

Доступно только для пользователей

Но дело в вот ещё в чём, видимо придётся читать за один подход буфера.

Т.е. бт должно быть равно размеру файла.


Система: Windows 10 x64, Kali Linux
Среды программирования: Delphi 7, Delphi 10.x

Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
 
NeoДата: Суббота, 21.05.2011, 09:04 | Сообщение # 7
Модератор
Зарегистрирован: 04.05.2010
Группа: Модераторы
Сообщений: 317
Статус: Offline
F1:=CreateFile('C:\Windows\system32\config\sam',GENERIC_READ,FILE_SHARE_READ,nil,OPEN_EXISTING,0,0);
F2:=CreateFile('D:\sam',GENERIC_WRITE,FILE_SHARE_WRITE,nil,CREATE_ALWAYS,0,0);
Я так попробовал,но,интересно,что sam копируется,но не открывается потом samInsidом.И в зависимости от бт,скопированный Sam весит то 400,то ещё как нибудь kb,хотя родной sam у меня 256 кб.....Как же всё-таки его рабочим скопировать?
 
dolphinДата: Суббота, 21.05.2011, 12:12 | Сообщение # 8
Администратор
Сообщений: 906
Статус: Offline
Сначала узнай размер, потом скопируй за один перенос буфера размером с файл.

Система: Windows 10 x64, Kali Linux
Среды программирования: Delphi 7, Delphi 10.x

Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
 
  • Страница 1 из 1
  • 1
Поиск:

delphicode.ru © 2008 - 2024 Хостинг от uCoz