Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Жечь болванки с помощью WriteFile, Реально ли? 
V
    Опции темы
586
Дата 13.5.2006, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: нет
Всего: 146



Недавно попробовал прочитать CD-ROM диск напрямую:

Код

.386
.model flat, stdcall
option casemap:none
include windows.inc
include kernel32.inc
includelib kernel32.lib
include user32.inc
includelib user32.lib

.data
target    db "\\.\E:", 0     ; CD-ROM drive
rfile    db "ret.dmp", 0
err1    db "Failed to open CD-ROM drive", 0
err2    db "Failed to create output file", 0
err3    db "Cannot read CD-ROM drive", 0
msg1    db "Complete", 0

.data?
buff    db 0C000h dup(?)
hDrv    dd ?
hFile    dd ?
rval    dd ?

.code
start:
invoke CreateFile, offset target, GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0
or eax, eax
jnz @f
invoke MessageBoxA, 0, offset err1, 0, 16
invoke ExitProcess, 0

@@:
mov hDrv, eax
invoke CreateFile, offset rfile, GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0
or eax, eax
jnz @f
invoke MessageBoxA, 0, offset err2, 0, 16
invoke CloseHandle, 0
invoke ExitProcess, 0

@@:
mov hFile, eax
invoke ReadFile, hDrv, offset buff, 0C000h, offset rval, 0
.if rval!=0C000h
 invoke MessageBoxA, 0, offset err3, 0, 16
 jmp exit
.endif
invoke WriteFile, hFile, offset buff, 0C000h, offset rval, 0
invoke MessageBoxA, 0, offset msg1, 0, 64

exit:
invoke CloseHandle, hDrv
invoke CloseHandle, hFile
invoke ExitProcess, 0
end start


Программа записывает первые 48 килобайт диска  E: в файл "ret.dmp".
Я проанализировал полученный файл в HEX-редакторе и обнаружил, что я получил часть образа CD-диска.

Внимание, вопрос: А что, если я попробую записать на чистый CD-ROM образ диска через  WriteFile?
Получится? 
PM   Вверх
sgi1981
Дата 14.5.2006, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 16.3.2006

Репутация: 1
Всего: 10



 smile Ну так если на ПК установлен специальный драйвер для работы с сидюками, то чего же не получится. Получится, конечно !
Но как правило такие драйвера - редкость. 
Это раз.
И в таком случае ничего удивительного не будет, потому что ОС при выполнении своей функции WriteFile будет вызывать функции этого драйвера. 
Это два.
 smile  


--------------------
Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства.
PM MAIL   Вверх
rsm
Дата 14.5.2006, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: нет
Всего: 62



Цитата(586 @  14.5.2006,  00:44 Найти цитируемый пост)
Получится?

В принципе - да, получится. Данные действительно будут записаны на диск. Только вот читаться нормально не будут, т.к. для этого нужно закрыть последнюю сессию. Кроме того, это будет работать только в Вин ХР\2003 (и старше) и только если в свойствах пишушего привода разрешена запись.
См. в аттаче пример нормальной записи файла на диск с последующим закрытием сессии.

З.Ы. 
Код
invoke CreateFile, ; ...
or eax, eax    
jnz @f ; неправильно, т.к. при ошибке условие не выполнится (см. справку по CreateFile)

Код
invoke CreateFile, ; ...
test eax, eax    
jns @f ; правильно

 

Присоединённый файл ( Кол-во скачиваний: 18 )
Присоединённый файл  cdburn.zip 2,80 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для Windows/DOS"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для Windows/Dos | Следующая тема »


 




[ Время генерации скрипта: 0.1401 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.