Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.02.03;
Скачать: [xml.tar.bz2];

Вниз

Виртуальный CD-ROM   Найти похожие ветки 

 
Чайник2   (2002-07-09 04:48) [0]

Здравствуйте, а как из папки «состряпать» виртуальный CD-ROM?


 
угол   (2002-07-09 08:54) [1]

http://delphi.mastak.ru/vopros/index.html


 
Stranger71   (2002-07-09 09:18) [2]

Я в своё время пользовался программой Virtual CD Extension. Линка нет. Поищи в Сети.


 
Dmitry W. Polschanoff   (2002-07-09 10:37) [3]

Уважаемый д.-р. Угол!
есть один персонаж, который на любой вопрос разорялся тирадой, смысл которой сводился к тому, что некий Артур имел обыкновение выходить на берег моря, предварительно подкрепившись чашкой горячего шоколада... Узнаваемо? Если нет, перечитайте Стругацких.

Был задан конкретный вопрос. Человек хотел получить конкретный ответ. Если Вы его не знаете, можно промолчать.
Если знаете, - говорите и да Бог Вам судья.



 
.nuke   (2002-07-09 14:30) [4]

а ты команду SUBST не пробовал, или не подходит?
Если надо могу прислать на мыло FAKECD (только для win9x)
Он весит около 10 kb....


 
nejest   (2002-07-10 01:52) [5]

етсь такая команда командной строки Subst имя диска путь, торая создаёт диск с указанным именем из каталога с указанным путём


 
direqtor   (2002-07-10 07:00) [6]

На самом деле диск получаемый коммандой SUBST CD-ROMом не пахнет и в помине - он наследует свойства того раздела диска на котором создан... Где-то в API должна быть какая-нибудь команда


 
угол   (2002-07-10 11:19) [7]

2Dmitry W. Polschanoff
Сам ты д.-р.

2 Чайник2
Конкретный ответ тут:
http://www.reversing.net/articles/Fox/filem003.html
... но, врятли он тебя поможет


 
Proton   (2002-07-11 02:34) [8]

только для этого надо систему изуродовать (поправть Kernel32.dll).
вот отрывочек из hlp файлика (если надо пульну весь по почте)

Пишем Fake-CD для OS Windows 95

Для DOS существовала прекрасная утилита - FakeCD, которая подменяла MSСDEX и эмулировала таким образом CD-диск который, на самом деле, был каталогом на винчестере. Для Win95 такую программу найти не просто, поэтому необходимо ее сделать самим. Этим мы и займемся, тем более, что это будет прекрасная практика по копанию в недрах 95"ого.
Посмотрим на проблему, обсуждавшуюся раннее, с другой стороны. Заменим не использование функции, а саму функцию. Если в DOS для замены функций необходимо только было изменить обработчик прерываний, то в Windows такой финт уже не поможет. Выясним, где "живет" GetDriveType(). И - о ужас - это главная библиотека Win95 KERNEL32.DLL. Что делать? Как всегда, запастись кофе и напуcтить на KERNEL32.DLL дизассемблер. OK, ждем окончания процесса и смотрим список экспортируемых функций. Вот нужная нам:

Exported fn(): GetDriveTypeA - Ord:013Fh
:BFF777C4 57 push edi
:BFF777C5 6A21 push 00000021
...
...
...
:BFF777E1 F2 repnz
:BFF777E2 AE scasb

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:BFF777DA(C)
|
:BFF777E3 648F02 pop dword ptr fs:[edx]
:BFF777E6 83C408 add esp, 00000008
:BFF777E9 5F pop edi
:BFF777EA E9E5D4FFFF jmp BFF74CD4

Делаем переход в конце(кнопка Jump to на панели W32Dasm) и видим продолжение. Функция, оказывается-то, длинная! Не будем в ней разбираться, а лучше вспомним как происходит возврат значения из функции. Т.о. ищем строку типа


mov eax,03000000

Нашли? Далее, как и при любом взломе, запомним последовательность HEX кодов нужной команды (а лучше нескольких следующих, так как загрузка в аккумулятор числа 3 не самая редкая операция) и найдем этот блок в копии библиотеки (в копии - потому что файл используется системой и не может быть изменен). Все, осталось лишь в режиме DOS подменить KERNEL32.DLL. Перезагрузимся и в Проводнике насла
димся результатом - все ваши жесткие диски представленны в виде кругленьких пластинок ранее обозначавших CD.

А теперь - для ленивых - кусок кода, который возвращает 3:

* Possible Reference to String Resource ID=00003: "....."

| :BFF74E0F B803000000 mov eax, 00000003 //Возвращаемое значение
:BFF74E14 EB05 jmp BFF74E1B //Переход на возврат

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:BFF74DEB(C), :BFF74DFC(C), :BFF74E0D(C)
|

* Possible Reference to String Resource ID=00006: "..."

Да - лучше сохранить старый KERNEL32, так как некоторые программы могут не оценить ваш юмор, и решить, что несколько CD и ни одного винчестера - это слишком. А вообще идеально было бы изменить функцию коренным образом. Скажем сделать CD дисками все, начиная с T. Тогда можно было бы подключать subst"ом каталоги, которые были бы CD, а винчестеры остануться винчестерами. Но это уже задание на дом. Удачи!


 
Proton   (2002-07-11 02:34) [9]

если речь идет о софте то настоятельно рекомендую daemon-tools
http://www.daemon-tools.com/
там же куча полезного софта есть


 
угол   (2002-07-11 04:59) [10]

2Proton
... не изуродовать, а модернизировать


 
VinRom   (2002-07-16 23:02) [11]

Как работает тот же Virtual CD? Пишется драйвер...


 
VinRom   (2002-07-16 23:10) [12]

Да, если своего не надо писать, есть готовая прога Virtual CD, у меня 3 версия (ворованная ;-)) - позволяет создавать образы из CD, каталогов, отдельных аудио треков, работает с образами по сети...
Производитель http://www.virtualcd-online.com/
Последняя версия 4.3


 
ed_209   (2002-07-18 03:12) [13]

я ж написал уже...

{ ... }
if DefineDosDevice(DDD_RAW_TARGET_PATH, "P:", "F:\Backup\Music\Modules") then
ShowMessage("Drive was created successfully")
else
ShowMessage("Error creating drive");
{ ... }

вроде оно и есть - из папки виртуальный диск


 
Proton   (2002-07-18 22:47) [14]

вообще то можно обойтись и без драйвера
большенство игр (и программ) не задаются сложной
проверкой а лиш проверяют учтройство на
a) наличие нужных файлов
б) GetDriveType - который должен вернут CDROM
1) воздаем для папки диск (субстом или по примеру ed_209).
но вот проблемма GetDriveType для такого диска вернет что это не CD а винтик и игра (прогграмма) не запустится - по этому идем к пункту 2
2) перехватываем все вызовы в системе функции GetDriveType из Kernel32, и проверяем если запрашивается для нашего устройства то возвращаем что это CD

но к сожелению этот пункт самый сложный - и реализовать его тяжело поскольку перехват нужно делать не для одного процесаа а для всех - на воруме не раз обсуждалась тема ререхвата вызова API функций - рекомендую воспользоваться поиском.

да к стати пункт 2 можно решить и с помощью изменения kernel32 (дизасемблирования и т.п.)

PS > тем не менее считаю этот подход более простым чем написание драйвера
PPs > если кто напишет оную прогу смело кидайте в кладовку - среди знающих людей успех ей обеспечен.


 
sniknik   (2002-07-19 14:13) [15]

есть такая прога с пошлым названием FackCD, именно делает папку сдромом, а не с образом как некоторые работают. под 2000ми не пойдет а с 98 милое дело. не найдеш до завтра пиши из дому притащу.
а для преобразований в образы и работы с ними я например Hero использую (он не только cd прожигает!)


 
dr.keshman   (2002-07-24 18:48) [16]

sniknik прав. У Nero есть такая штука как Drive Image. Если
ей указать файл образа (например, созданный Nero), то из него
получится CD-ROM в любой Win32. Некоторым программам хочется
чтобы их CD имел вполне конкретный label - он указывается при
создании образа диска.


 
Dabus   (2002-08-21 01:49) [17]

To ED_209: СНИМАЮ ШАПКУ - ТЫ КРУТОЙ !!!

Всех остальных с Fake и Virtual CD а так же label, на свой счёт прошу это не принимать.


 
frum   (2002-08-21 10:14) [18]

ED_209 - вот внатуре Дельфер, а остальных на zadnitsa.com редиректом прямым.


 
frum   (2002-08-21 10:35) [19]

ED_209 - вот это Дельфер. А остальных попрошу прямым редиректом на zadnitsa.com.


 
Romualdy   (2002-08-21 17:54) [20]


> if DefineDosDevice(DDD_RAW_TARGET_PATH, "P:", "F:\Backup\Music\Modules")
> then


здорово!, только в 2к не совсем работает :(
диск создаёт, но сделать с ним ничего нельзя :)


 
Chlavik   (2002-10-07 01:45) [21]

Помойму крутой Paragon cd Emulator Даже если его не загружать то созданные диски (Сd-rom)всё равно почемуто остаются при чём с влодеными имиджами!! Так это ж круто! :)


 
Илайдж   (2002-11-21 09:20) [22]

Romualdy (21.08.02 17:54)

> if DefineDosDevice(DDD_RAW_TARGET_PATH, "P:", "F:\Backup\Music\Modules")
> then

здорово!, только в 2к не совсем работает :(
диск создаёт, но сделать с ним ничего нельзя :)


Угу;) дает P: без описания и ниче не сделаешь =)
Хоть написали бы как ремувить )


 
cdadmitriy   (2002-11-21 10:23) [23]


Как сопоставить каталог букве диска (так-же, как это делает subst.exe)
// За пример благодарим Ворническу Владимира

procedure addSubst(Drv: string; Path: string);
begin
if (Length(Path) = 0) then Exit;
if (DefineDosDevice(0, PChar(Drv), PChar(Path)) = False) then RaiseLastWin32Error;
end;

procedure KillSubst(Drv: string);
begin
if (DefineDosDevice(DDD_REMOVE_DEFINITION, PChar(Drv), nil) = False)
then RaiseLastWin32Error;
end;



 
Victor_Cr   (2002-11-21 10:25) [24]

Ну может быть стоит попробовать утилиту subst. Может это и не то что нужно на покрайней мере работает стабильно. Входит в стандартную поставку винды. Можно запускать с командной строки:

subst <NEW Disk LETTER>: <Folder path>



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2003.02.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.01 c
4-5340
Vuture
2002-12-20 14:46
2003.02.03
Как залочить диск (например флоппик)?


3-4709
mate
2003-01-18 09:29
2003.02.03
SQL и AND и OR


1-4982
sddqw
2003-01-23 14:03
2003.02.03
Удаление обьектов


1-5041
ЮРИЙ_К
2003-01-23 15:45
2003.02.03
Снимок экрана в JPG


1-4996
Makhanev A.S.
2003-01-22 23:54
2003.02.03
В чём ошибка?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский