Страница 1 из 2

IO.SYS patch - постановка задачи

СообщениеДобавлено: 25 фев 2016, 17:11
0ffer
IO.SYS patch - постановка задачи
Когда ДОС не ДОС так назвал свою публикацию на нескольких англоязычных форумах Mike Gonta - { when DOS is not DOS}.

Автор предложил разработчикам запускать свои ДОС приложения просто переименовав их в command.com, воспользовавшись тем свойством IO.SYS из MS-DOS 7.10 (Win98) - the first byte of the code must be 0x7A which is is checked by io.sys - первый байт проверяемый io.sys должен быть 0x7A.

Воспользовашись этой идеей я попробовал command.com от MS-DOS 7.10 совместить с IO.SYS из MS-DOS 8.00 заменив в нем 00007A==>>000080 и отключив проверку версии ДОС 3D070A74==>>3D070AEB

На ассемблерном форуме задал вопрос как вообще отключить в IO.SYS из MS-DOS 7.10 проверку соответствующего байта

"How to change io.sys from MS-DOS 7.10 to remove this check?"

Получен ответ: "Run it through a disassembler and look for something that looks like"

cmp byte [???], 0x7A


Основная задача как изменить IO.SYS из MS-DOS 8.00 для прямого запуска 4DOS.COM и NDOS.COM из Norton Utilities 8.0 не используя команду shell=V:\ndos.com V:\ в config.sys

V-буква виртуального диска

В HEX-редакторе заменил строки COMMAND.COM==>>NDOS.COM в IO.SYS из MS-DOS 8.00 и в файле SYS.COM исправленном для работы в MS-DOS 8.00.

SYS.COM корректно переносит на флешку IO.SYS и NDOS.COM, перезаписывает загрузочный сектор и при загрузке получаем сообщение

Type the name of the Command Interpreter

В архиве файлы IO.SYS NDOS.COM NSYS.COM - переименованный NSYS.COM с заменой строки COMMAND.COM==>>NDOS.COM

Для совместимости с 4DOS.COM замена строк NDOS.COM==>>4DOS.COM в IO.SYS и 4SYS.COM

Сам не программист, может быть знатоки ассемблера и дизассемблера попробуют решить эту задачу

Re: IO.SYS patch - постановка задачи

СообщениеДобавлено: 25 фев 2016, 20:36
SokilOff
0ffer писал(а):Основная задача как изменить IO.SYS из MS-DOS 8.00 для прямого запуска 4DOS.COM и NDOS.COM из Norton Utilities 8.0 не используя команду shell=V:\ndos.com V:\ в config.sys

Во-первых, команда shell в config.sys предназначена именно для этого. Зачем изобретать велосипед, да ещё с квадратными колёсами ?
Во-вторых, нет никаких гарантий совместимости и корректной работы 4DOS.COM или NDOS.COM с огрызками DOS (которые многие называют MS-DOS 8.0) из Windows ME

Re: IO.SYS patch - постановка задачи

СообщениеДобавлено: 25 фев 2016, 22:28
0ffer
SokilOff писал(а):

... с огрызками DOS (которые многие называют MS-DOS 8.0) из Windows ME

Подтвеждение от Microsoft "This Version of Windows Runs Only on MS-DOS 8.00 "
Полная информация об MS-DOS 8.00 на моей странице, на которую есть ссылки и в википедии, если же у вас нет идей по существу, то не стоит огрызаться

Re: IO.SYS patch - постановка задачи

СообщениеДобавлено: 26 фев 2016, 00:17
SokilOff
0ffer писал(а):
SokilOff писал(а):

... с огрызками DOS (которые многие называют MS-DOS 8.0) из Windows ME

Подтвеждение от Microsoft "This Version of Windows Runs Only on MS-DOS 8.00 "
Полная информация об MS-DOS 8.00 на моей странице

Самое смешное, обе ссылки подтверждают, что т.н. MS-DOS 8 - действительно огрызок, из которого часть функционала вырезана и ещё часть принудительно заблокирована.
Но главное - непонятна финальная цель. Например что мешает переименовать NDOS в command.com ?

0ffer писал(а):В HEX-редакторе заменил строки COMMAND.COM==>>NDOS.COM в IO.SYS из MS-DOS 8.00 и в файле SYS.COM исправленном для работы в MS-DOS 8.00.

Для начала каждая строка, заменённая на ndos.com, должна заканчиваться байтом 00, а не тремя пробелами.

Re: IO.SYS patch - постановка задачи

СообщениеДобавлено: 26 фев 2016, 01:18
0ffer
что мешает переименовать NDOS в command.com ?


Как указано в первом посте IO.SYS прежде чем запустить command.com проверяет не только имя, но и определенные байты в нем как указал в своем посте Mike Gonta
"To get around this and have io.sys load and run your own code directly it must be a DOS "MZ" exe file even though
it is named command.com and the first byte of the code must be 0x7A which is is checked by io.sys
."
Кроме того если использовать command.com от другой версии ДОС, то command.com прежде чем загрузится проверяет версию ДОС которую в какую-то область памяти записывает io.sys

каждая строка, заменённая на ndos.com, должна заканчиваться байтом 00, а не тремя пробелами

проверял экспериментально, заполняя 20 - пробелами или 00, заполняя пробелами не виснит и не дает сообщений об ошибках

Re: IO.SYS patch - постановка задачи

СообщениеДобавлено: 26 фев 2016, 02:08
0ffer
IO.SYS c переименованным интерпретатором команд и в имени заполненный нулями

Может быть этот более правильный...

Re: IO.SYS patch - постановка задачи

СообщениеДобавлено: 26 фев 2016, 02:44
0ffer
ndosmsg.png
ndosmsg.png (1.29 Кб) Просмотров: 10127

после ввода с клавиатуры

Re: IO.SYS patch - постановка задачи

СообщениеДобавлено: 26 фев 2016, 03:10
SokilOff
0ffer писал(а):Может быть этот более правильный...

Ну при беглом осмотре в hiew на предмет проверки на 'ZM' или 'MZ' нашлось 3 места

E50E: 74 08 (для отключения изменить на 74 00)
E513: 74 03 (аналогично - на 74 00)

1718A: 75 55 (соответственно на 75 00)

Я не проверял, что и как. Если есть желание, можно поотключать по одной или в разных комбинациях :) За результат ответственность не несу, ибо детально в коде не пытался разобраться. Может все 3 места вообще не о том.

Re: IO.SYS patch - постановка задачи

СообщениеДобавлено: 26 фев 2016, 23:09
0ffer
на предмет проверки ... 'MZ'
... E50E: 74 08

3D 4D 5A 74 08
Microsoft всегда действует по принципу семь раз отмерь - один раз отрежь
в данном случае проверяется сигнатура 'MZ' на предмет различия запуска .com или .exe файлов
3D 4D 5A 74 08==>>3D 4D 5A EB 08 и io.sys не запускает .com файл
install=clear.com - отдельный файл встроенной в command.com команды cls

Может все 3 места вообще не о том.

command.com от MS-DOS 7.10 совместить с IO.SYS из MS-DOS 8.00 заменив в нем 00007A==>>000080 и отключив проверку версии ДОС 3D070A74==>>3D070AEB


главное отменить в io.sys "узнавание" "родного" command.com

"How to change io.sys from MS-DOS 7.10 to remove this check?"

Получен ответ: "Run it through a disassembler and look for something that looks like"

cmp byte [???], 0x7A

В случае io.sys из MS-DOS 8.00 0x7A=0x80

Re: IO.SYS patch - постановка задачи

СообщениеДобавлено: 11 мар 2016, 08:03
Nika
Вот в аттаче то, что ищет Offer.
И всё-таки я упорно не знаю, зачем сие нужно..

Re: IO.SYS patch - постановка задачи

СообщениеДобавлено: 11 мар 2016, 16:56
0ffer
Nika писал(а): зачем сие нужно..


Для моей страницы DOS для NTFS
Специальная версия восьмого ДОСа для Нортон Командера 5.51 c полной поддержкой русских длинных имен, без переменных окружения windir и temp, не создает BOOTLOG-ов - Результат обсуждения с пользователем shiva в теме НТФС в дос
Огромнейшее спасибо :!:

Re: IO.SYS patch - постановка задачи

СообщениеДобавлено: 11 мар 2016, 17:36
SokilOff
0ffer писал(а):Специальная версия восьмого ДОСа для Нортон Командера 5.51 c полной поддержкой русских длинных имен, без переменных окружения windir и temp, не создает BOOTLOG-ов

Вот теперь более-менее ясно. Но...

Во-первых, я не уверен, что ndos из NU8 способен работать с длинными именами файлов.
Во-вторых, NC 5.51 оставил грустные воспоминания своими багами, которые Симантек уже не собирался исправлять. Навскидку: порча истории команд (Alt+F8) при запуске из NC любой резидентной программы. Да и DN был куда более продвинутым.

Но в любом случае - удачи с проектом.

Re: IO.SYS patch - постановка задачи

СообщениеДобавлено: 11 мар 2016, 18:11
0ffer
SokilOff писал(а):Во-первых, я не уверен, что ndos из NU8 способен работать с длинными именами файлов.

Полная поддержка русских длинных имен на всех разделах FAT32 и NTFS обеспечивается драйверами doslfn.com и ndos.exe от Paragon.


Патч от Nika:

Loads "left" interpreter named "command.com"
io.sys
000171CC: 14 00

также работает с 4dos.com.

4DOS.png
4DOS.png (1.45 Кб) Просмотров: 9945

4DOS.zip
io.sys 4dos.com 4sys.com
(226.76 Кб) Скачиваний: 177

IO.SYS 110 080 patch

СообщениеДобавлено: 22 июн 2018, 17:06
0ffer
Известно, что в составе Windows ME файл IO.SYS размером 110 080, обновленный Microsoft-ом в 2001 году, предназначенный только для запуска Windows ME с жесткого диска и не обрабатывающий config.sys и autoexec.bat непосредственно загружает C:\ WINDOWS\SYSTEM\VMM32.VXD. Распакованный IO.SYS с заменой VMM32.VXD на COMMAND.COM позволяет загрузится в MS-DOS 8.00.

Стартовое меню IO.SYS размером 110 080

menu.png
menu.png (4.13 Кб) Просмотров: 3987


Значения переменных окружения при загрузке с жесткого диска

env_HDD.png
env_HDD.png (1.55 Кб) Просмотров: 3990


Значения переменных окружения при загрузке с дискеты
env_FDD.png
env_FDD.png (1.42 Кб) Просмотров: 3987

Re: IO.SYS patch - постановка задачи

СообщениеДобавлено: 23 сен 2018, 13:22
0ffer
Второй файл из обновления 311561 winboot.ebd - io.sys размером 116 736 предназначен для загрузки с дискеты,
menu.png
menu.png (5.22 Кб) Просмотров: 3245

проверяет устройство с которого загружается в отличии от winboot.sys- io.sys 110 080 загружаемого с жесткого диска.
Распаковываем с помощью декомпрессора Rudolph R. Loew оба файла и берем 2048 байт из winboot.sys для замены в winboot.ebd.
Применяем известные исправления к io.sys.
Как оказалось io.sys также проверяет сигнатуру MZ в command.com.
В архиве интерпретатор команд

с минимальным набором :
CD COPY DEL DIR ECHO EXIT GOTO IF PAUSE REM SET TYPE VER
io_sys_patch.zip
(112.23 Кб) Скачиваний: 60


Теперь winboot.ebd - io.sys загружается независимо от носителя.

Распакуйте архив в папку и запустите io_sys_patch.bat, автоматически скачается исправление 311561usam.exe и на выходе готовые файлы io.sys и winboot.ebd загружаемые с HDD.
command.com совместим FreeDOS и c io.sys ver. 8.00
miniCOMMAND v7.10 от Datalight также работает с io.sys ver. 7.10 при применении исправления от Nika:
7A F9 75 0A ==>> 7A F9 75 00