Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #63, ФЕВРАЛЬ 2006 г.

все на одной дискете

КРИС КАСПЕРСКИ АКА МЫЩЪХ

Спецвыпуск: Хакер, номер #063, стр. 063-006-1


DOSWIN32 — КОМПАКТНЫЙ ВАРИАНТ WINDOWS

ШТАТНАЯ КОНФИГУРАЦИЯ WINDOWS ВЕСИТ СОТНИ МЕГАБАЙТ, С КАЖДЫМ ГОДОМ ОНА СТАНОВИТСЯ ВСЕ ТЯЖЕЛЕЕ И ТЯЖЕЛЕЕ. ТЕМ НЕ МЕНЕЕ, В МАКСИМАЛЬНО УРЕЗАННОМ ВАРИАНТЕ СИСТЕМА СВОБОДНО УМЕЩАЕТСЯ НА ОДНУ ДИСКЕТУ ВМЕСТЕ С FAR'ОМ И ПАРОЙ-ТРОЙКОЙ МЕЛКИХ ПРОГРАММ. ЭТО ЧУДО СОЗДАЕТСЯ С ПОМОЩЬЮ УТИЛИТЫ DOSWIN32, СОТВОРЕННОЙ ЮРИЕМ ХАРОНОМ

... и на обломках microsoft'а напишут наши имена ... (фидошное)

MS-DOS мертва? Почти. Но поднимать тост за ее упокой еще рано. Сохранилась огромная масса древних машин, которые нужно как-то программировать. Windows на них не поставишь, а под MS-DOS весь инструментарий давно прокис и заржавел. Нет ни свежих компиляторов, ни отладчиков, ни библиотек. Ностальгия — прекрасная вещь, но только не в тот момент, когда приходится вспоминать все три модели памяти с жуткими ограничением в 64 Кб на сегмент и прочими «прелестями» тех времен.

Windows — прекрасная ось, только жаль, что сильно падучая :). Хуже того, Windows — это не система реального времени! Нельзя доверять ей управление процессами, требующими немедленного отклика (наподобие датчика давления на паровом котле), поскольку в любой момент «нехороший» процесс или драйвер может захватить управление и задержать его на неопределенный срок. Несмотря на то, что Windows «успешно» применяется в АТМ и прочих встраиваемых устройствах, убытки от сбоев достигают довольно внушительных объемов. Почему бы не использовать QNX или MS-DOS? Кто же будет программировать их? Современные программисты знают только Microsoft Visual C++/Borland Builder и с трудом отличают язык от средств разработки. Осваивать альтернативные операционные системы никто не хочет — слишком маленький потенциальный рынок.

Вот если бы было «волшебное» средство для запуска win32-программ под MS-DOS! Пусть даже без графического интерфейса и в текстовом режиме командной строки. И такое средство действительно есть — утилита doswin32 Юрия Харона занимается именно этим и представляет собой не эмулятор Windows, а DPMI-расширитель, реализующий базовый минимум системных функций Windows. Doswin32 позволяет запускать FAR, MS VC, BCC, PKZIP и другие консольные приложения (запуск файлов, обработанных упаковщиками или защищенных протекторами, не гарантирован, и часто они не запускаются). Скорость работы выше всяких похвал, даже на древнем оборудовании все буквально летает.

что может doswin32

Ядро исполняемой системы (dw32core.zip), занимающее в упакованном виде чуть больше 100 Кб (!), — это единственное, что нужно нам для нормальной работы. В этот крохотный объем Харону удалось втиснуть:

— ПОЛНОЦЕННЫЙ DPMI-РАСШИРИТЕЛЬ, КОТОРЫЙ ПЕРЕВОДИТ ПРОЦЕССОР В ЗАЩИЩЕННЫЙ РЕЖИМ, ПОДДЕРЖИВАЕТ ВИРТУАЛЬНУЮ ПАМЯТЬ (ВКЛЮЧАЯ ПОДКАЧКУ НА ДИСК) И СОДЕРЖИТ «ПЕРЕХОДНИКИ» ИЗ ЗАЩИЩЕННОГО РЕЖИМА К ФУНКЦИЯМ MS-DOS.

— ЗАГРУЗЧИК PE-ФАЙЛОВ, КОТОРЫЙ «ПЕРЕВАРИВАЕТ» И ИСПОЛНЯЕМЫЕ ФАЙЛЫ, И ДИНАМИЧЕСКИЕ БИБЛИОТЕКИ (DLL).

— ОСНОВНЫЕ СИСТЕМНЫЕ ФУНКЦИИ БАЗОВЫХ WINDOWS-БИБЛИОТЕК: ERNEL32.DLL, USER32.DLL, ADVAPI32.DLL, OLE32.DLL, SHELL32.DLL, MPR.DLL, NTDLL.DLL, VERSION.DLL, WINMM.DLL, OLEAUT32.DLL, RPCRT4.DLL, WINSPOOL.DRV, GDI32.DLL. РАЗУМЕЕТСЯ, РЕАЛИЗОВАН НЕ ПОЛНЫЙ НАБОР ТОЧЕК ВХОДА: ДЛЯ КОНСОЛЬНЫХ ЗАДАЧ ПОЛНЫЙ И НЕ НУЖЕН, А МЕСТА ДЛЯ НЕГО ТРЕБУЕТСЯ МНОГО. К ТОМУ ЖЕ МНОГИЕ ТОЧКИ ВХОДА «РЕАЛИЗОВАНЫ» В ВИДЕ «ЗАГЛУШЕК», СОСТОЯЩИХ ИЗ ОДНОГО ТОЛЬКО RETURN ERROR_CALL_NOT_IMPLMENTED, RETURN ERROR_INVALID_HANDLE И Т.Д. ЭТО «ПАТЕНТОВАННАЯ» ТЕХНОЛОГИЯ WINDOWS 9X — ОБЪЯВИТЬ ФУНКЦИЮ В SDK И ТУТ ЖЕ «ЗАТКНУТЬ» ЕЕ, ЧТОБЫ НИКТО НЕ ИСПОЛЬЗОВАЛ.

Содержание  Вперед на стр. 063-006-2