Provide feedback
Saved searches
Use saved searches to filter your results more quickly
Sign up
Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров8.3K
На видео выше я записал наглядную реализацию процесса, описанного в разделе «Сборка и установка».
Эта статья посвящена запуску SoftICE, популярного отладчика для DOS и Windows, в эмулированной среде MS-DOS, а также обходу недостатка Bochs, эмулятора IA-32 (x86) PC.
Весь процесс выполнялся из-под Linux. Не знаю, получится ли проделать то же самое в MacOS, не говоря уже о Windows.
Эмуляция SoftICE
Отладчик SoftICE был разработан компанией NuMega в 1987 году и стал самым используемым инструментом для отладки DOS, а позднее и Windows. Последней его версией стала 2.80, которая вышла в 1997 году исключительно для DOS. У того, кто захочет использовать динамическую отладку для реверс-инжиниринга старого ПО сегодня, есть несколько вариантов:
- DOSBox-X — форк DOSBox, оснащённый отладчиком, имеющим сходство с SoftICE.
- IDA — хоть и является в первую очередь дизассемблером, также имеет режим отладки; плюс есть плагин dsbxida, используемый в качестве связки между IDA и DOSBox-X при отладке программ DOS.
- Собственные инструменты, которые можно создать с помощью эмулятора процессора Unicorn. Также есть UniDOS — (пока что ограниченный) эмулятор DOS на базе Unicorn.
Однако если вы хотите не просто заняться реверс-инжинирингом, но и воспроизвести реальный опыт использования старых инструментов DOS, то с SoftICE ничто не сравнится. Когда соответствующее оборудование недоступно, мы прибегаем к эмуляторам, и вот здесь возникают свои сложности.
SoftICE не работает в DOSBox-X. Этот отладчик работает в Bochs, который, в отличие от DOSBox, основан на полной эмуляции x86 процессоров. А в этом случае придётся чуть повозиться с настройкой Bochs, но есть и другая проблема.
Предположим, мы установили MS-DOS и SoftICE в среде Bochs. Запустить SoftICE можно комбинацией Ctrl+d, и всё будет в порядке, если не пытаться проделать это в процессе выполнения программы, использующей VGA-режим – игры, например. В этом случае выполнение приостанавливается, и SoftICE по факту оказывается на первом плане, но мы его не видим из-за некорректного возобновления текстового режима. Окно Bochs просто уменьшается до высоты интерфейса отладчика.
На аппаратном уровне решением будет подключение дополнительного монитора ко второму графическому адаптеру, обеспечивающему вывод с контроллера дисплея MC6845, то есть карты MDA/Hercules. После этого выполнение ALTSCR ON
в SoftICE позволит переключить дисплей отладчика на второй монитор.
К сожалению, Bochs не эмулирует ни MDA (Monochrome Display Adapter), ни второй дисплей. Хотя сэмулировать текстовый режим MDA нетрудно, в конечном итоге я так и сделал. Я откопал старую тему на SourceForge, где обсуждали добавление эмуляции MDA в Bochs. Полноценной реализации нигде не приводилось, поэтому я создал форк Bochs с необходимыми изменениями.
Детали реализации можно найти в файле readme репозитория. Самое важное, пожалуй, то, что текстовый экран MDA в самом Bochs не отображается. Он записывается в именованный канал передачи (pipe) в виде кодовых точек формата UTF-8 вместе с управляющими последовательностями ANSI для отрисовки атрибутов символов MC6845. Затем этот канал опрашивается внешней программой, выводящей из него текст в терминал (образец такой программы был добавлен в репозиторий).
На скриншоте ниже в Bochs выполняется игра при одновременном отображении SoftICE в окне терминала:
Сборка и установка
▍ Сборка Bochs
Клонируйте мой форк Bochs и скомпилируйте его с опцией cpu-level-3
, то есть под 386-процессор. Подробнее о компиляции Bochs сказано здесь. Вот пример:
$ ./configure --with-sdl2 --enable-cpu-level=3
$ make
Создайте образ жёсткого диска с помощью bximage
(часть сборки Bochs). Вполне сойдут предустановленные значения (hd
/ flat
/ 512
) и размер в 30 МБ. Я назвал его hdd.img
.
Нам потребуется файл .bochsrc
, который мы инициализируем, запустив Bochs и выбрав 4. Save options to....
Затем мы его отредактируем, внеся следующие изменения (YMMV):
romimage: file="/usr/local/share/bochs/BIOS-bochs-legacy", address=0x00000000, options=fastboot
floppya: 1_44=dos622_d1.img, status=inserted
ata0-master: type=disk, mode=flat, path=hdd.img
#port_e9_hack_all_rings: enabled=0
Мне пришлось закомментировать port_e9_hack_all_rings
, потому что иначе Bochs выбрасывал ошибку. dos622_d1.img
– это первый из установочных дисков MS-DOS 6.22. Все диски вы найдёте в разделе «Загрузки» ниже.
▍ Установка DOS
В других версиях Bochs есть один неприятный момент – после выбора 6. Begin simulation
Bochs переходит сразу к отладчику, требуя ввода c <newline>
для продолжения выполнения. Чтобы это исправить, нужно создать файл (здесь я его назвал bochs_init
), содержащий c
и перевод строки, и передавать его в виде аргумента опции -rc
. Также можно пропустить стартовое меню, передав -q
. Объединяя эти два момента, следующая команда обеспечит быстрый запуск Bochs:
$ bochs -q -rc bochs_init
Ещё одна проблема в том, что Bochs аварийно завершается при запуске, когда в результате нечистого выхода остаётся файл блокировки образа диска. Поэтому, если присутствует висящий hdd.img.lock
, перед запуском Bochs его нужно удалить.
Запустите Bochs и перейдите к установке MS-DOS. Когда система запросит очередной диск, кликните CONFIG
и измените файл образа для Floppy disk 0
. После завершения установки измените опцию boot
в .bochsrc
с floppy
на disk
. При очередном запуске Bochs он должен загрузиться сразу в DOS.
▍ Установка драйвера CD-ROM
Далее снова используйте bximage
, но теперь для создания образа дискеты (опции: fd
/ 1.44M
). Я назову его floppy.img
. Вставьте этот диск в Bochs (CONFIG
/ 1. Floppy disk 0
) и отформатируйте командой format a:
в DOS. Также можно изменить в .bochsrc
опцию floppya
, чтобы этот образ использовался по умолчанию. После форматирования мы монтируем его в хост-систему и копируем oakcdrom.sys
, драйвер Oak CD-ROM (тоже лежит в разделе «Загрузки»):
$ sudo mount floppy.img /mnt/tmp
$ sudo cp oakcdrom.sys /mnt/tmp
$ sudo umount /mnt/tmp
Устанавливаем драйвер в DOS.
C:\> copy a:\oakcdrom.sys c:\dosC:\> edit config.sys
Добавьте в CONFIG.SYS
эту строку:
DEVICEHIGH=C:\DOS\OAKCDROM.SYS /D:MSCD001
А в AUTOEXEC.BAT
эту:
LH C:\DOS\MSCDEX.EXE /D:MSCD001
▍ Установка SoftICE
Теперь, когда мы можем использовать CD-образ, давайте создадим его в хост-системе. Предполагая, что файлы SoftICE 2.80 (лежат в S-ICE280.ZIP внутри sice280_and_extras.zip в разделе «Загрузки») находятся в каталоге sice
, эта команда создаст из него образ ISO:
$ mkisofs -o cdrom.iso -V CDROM sice
Для вставки CD измените опцию ata1-master
в .bochsrc
:
ata1-master: type=cdrom, path=cdrom.iso, status=inserted
После очередной загрузки DOS можно продолжать установку SoftICE.
C:\> mkdir sice
C:\> xcopy /e/s d: c:\sice
В файле AUTOEXEC.BAT
добавьте C:\SICE
к переменной пути PATH
. Обратите внимание, в DOS, в отличие от Bash, в качестве разделителя в путях используется точка с запятой:
SET PATH=%PATH%;C:\SICE
В CONFIG.SYS
пропишите загрузку SoftICE до всех остальных драйверов:
DEVICE=C:\SICE\S_ICE.EXE
На этом всё. После перезагрузки вы сможете вызывать SoftICE нажатием Ctrl+d
.
Отображение SoftICE через MDA
Для получения возможности отладки игр и аналогичных графических программ осталось проделать один шаг. Эмуляция MDA в моём форке Bochs активируется, когда Bochs находит переменную среды MDA_PIPE
, содержащую путь к именованному каналу передачи. Создайте этот канал в хост-системе:
$ mkfifo /tmp/mda_pipe
Обратите внимание, что после включения MDA при отсутствии работающей программы, использующей канал передачи, выполнение будет заблокировано. Поэтому далее мы такую программу запустим – это будет образец mda_viewer из репозитория.
$ cd ~/bochs-dual-monitor/mda_viewer/
$ MDA_PIPE=/tmp/mda_pipe python .
Запустите Bochs, дополнительно указав MDA_PIPE
:
$ MDA_PIPE=/tmp/mda_pipe ~/bochs-dual-monitor/bochs/bochs -q
Подтверждение того, что MDA запущен, можно найти в выводе Bochs в виде следующей строки:
[MDA] Using named pipe "/tmp/mda_pipe".
Запустите игру или иную программу, использующую режим VGA. Нажмите Ctrl+d
. Графический дисплей исчезнет. Но с уверенностью, что SoftICE сейчас находится на переднем плане (и с выбранным окном Bochs), введите следующую команду SoftICE:
altscr on
Графический дисплей возвращается, и окно терминала, где выполняется mda_viewer
, теперь показывает SoftICE. Потребуется привыкнуть набирать команды не в окне терминала, а в окне Bochs. Зато теперь с помощью этой конфигурации можно реверс-инженерить программы DOS так, будто вы снова в 1990 году.
Загрузки
Всё это ПО давно не поддерживается, так как самое молодое датируется 1997 годом.
MS-DOS 6.22 ↪
SoftICE 2.80 and extras ↪
OAKCDROM.SYS ↪
Скидки, итоги розыгрышей и новости о спутнике RUVDS — в нашем Telegram-канале 🚀
Ask the publishers to restore access to 500,000+ books.
Internet Archive Audio
Live Music Archive
Librivox Free Audio
Featured
- All Audio
- Grateful Dead
- Netlabels
- Old Time Radio
- 78 RPMs and Cylinder Recordings
Top
- Audio Books & Poetry
- Computers, Technology and Science
- Music, Arts & Culture
- News & Public Affairs
- Spirituality & Religion
- Podcasts
- Radio News Archive
Images
Metropolitan Museum
Cleveland Museum of Art
Featured
- All Images
- Flickr Commons
- Occupy Wall Street Flickr
- Cover Art
- USGS Maps
Top
- NASA Images
- Solar System Collection
- Ames Research Center
Software
Internet Arcade
Console Living Room
Featured
- All Software
- Old School Emulation
- MS-DOS Games
- Historical Software
- Classic PC Games
- Software Library
Top
- Kodi Archive and Support File
- Vintage Software
- APK
- MS-DOS
- CD-ROM Software
- CD-ROM Software Library
- Software Sites
- Tucows Software Library
- Shareware CD-ROMs
- Software Capsules Compilation
- CD-ROM Images
- ZX Spectrum
- DOOM Level CD
Texts
Open Library
American Libraries
Featured
- All Texts
- Smithsonian Libraries
- FEDLINK (US)
- Genealogy
- Lincoln Collection
Top
- American Libraries
- Canadian Libraries
- Universal Library
- Project Gutenberg
- Children’s Library
- Biodiversity Heritage Library
- Books by Language
- Additional Collections
Video
TV News
Understanding 9/11
Featured
- All Video
- Prelinger Archives
- Democracy Now!
- Occupy Wall Street
- TV NSA Clip Library
Top
- Animation & Cartoons
- Arts & Music
- Computers & Technology
- Cultural & Academic Films
- Ephemeral Films
- Movies
- News & Public Affairs
- Spirituality & Religion
- Sports Videos
- Television
- Videogame Videos
- Vlogs
- Youth Media
Search the history of over 928 billion
web pages
on the Internet.
Search the Wayback Machine
Search icon
An illustration of a magnifying glass.
Mobile Apps
- Wayback Machine (iOS)
- Wayback Machine (Android)
Browser Extensions
- Chrome
- Firefox
- Safari
- Edge
Archive-It Subscription
- Explore the Collections
- Learn More
- Build Collections
Save Page Now
Capture a web page as it appears now for use as a trusted citation in the future.
Please enter a valid web address
- About
- Blog
- Projects
- Help
- Donate
- Contact
- Jobs
- Volunteer
- People
- About
- Blog
- Projects
- Help
-
Donate
Donate icon
An illustration of a heart shape - Contact
- Jobs
- Volunteer
- People
Item Preview
NuMega_SoftIce_Windows_3.2_2.jpg
Flag this item for
-
Graphic Violence
-
Explicit Sexual Content
-
Hate Speech
-
Misinformation/Disinformation
-
Marketing/Phishing/Advertising
-
Misleading/Inaccurate/Missing Metadata
software
NuMega SoftIce Windows 3.2 2
- Language
- English
- Item Size
- 66.1M
NuMega SoftIce Windows 3.2 2
- Addeddate
- 2018-05-01 19:47:26
- Identifier
- NuMega_SoftIce_Windows_3.2_2
- Scanner
- Internet Archive Python library 1.7.4
plus-circle Add Review
plus-circle Add Review
comment
Reviews
There are no reviews yet. Be the first one to
write a review.
1,700
Views
1
Favorite
DOWNLOAD OPTIONS
download 1 file
TIFF download
download 1 file
TORRENT download
download 8 Files
download 6 Original
SHOW ALL
IN COLLECTIONS
CD-ROM Software Library
CD-ROM Software Collection
The Vintage Software Collection
Uploaded by
CD-ROM Preservation Project
on
SIMILAR ITEMS (based on metadata)
Terms of Service (last updated 12/31/2014)
Распределенное обучение с TensorFlow и Python
AI_Generated 05.05.2025
В машинном обучении размер имеет значение. С ростом сложности моделей и объема данных одиночный процессор или даже мощная видеокарта уже не справляются с задачей обучения за разумное время. Когда. . .
CRUD API на C# и GraphQL
stackOverflow 05.05.2025
В бэкенд-разработке постоянно возникают новые технологии, призванные решить актуальные проблемы и упростить жизнь программистам. Одной из таких технологий стал GraphQL — язык запросов для API,. . .
Распознавание голоса и речи на C#
UnmanagedCoder 05.05.2025
Интеграция голосового управления в приложения на C# стала намного доступнее благодаря развитию специализированных библиотек и API. При этом многие разработчики до сих пор считают голосовое управление. . .
Реализация своих итераторов в C++
NullReferenced 05.05.2025
Итераторы в C++ — это абстракция, которая связывает весь экосистему Стандартной Библиотеки Шаблонов (STL) в единое целое, позволяя алгоритмам работать с разнородными структурами данных без знания их. . .
Разработка собственного фреймворка для тестирования в C#
UnmanagedCoder 04.05.2025
C# довольно богат готовыми решениями – NUnit, xUnit, MSTest уже давно стали своеобразными динозаврами индустрии. Однако, как и любой динозавр, они не всегда могут протиснуться в узкие коридоры. . .
Распределенная трассировка в Java с помощью OpenTelemetry
Javaican 04.05.2025
Микросервисная архитектура стала краеугольным камнем современной разработки, но вместе с ней пришла и головная боль, знакомая многим — отслеживание прохождения запросов через лабиринт взаимосвязанных. . .
Шаблоны обнаружения сервисов в Kubernetes
Mr. Docker 04.05.2025
Современные Kubernetes-инфраструктуры сталкиваются с серьёзными вызовами. Развертывание в нескольких регионах и облаках одновременно, необходимость обеспечения низкой задержки для глобально. . .
Создаем SPA на C# и Blazor
stackOverflow 04.05.2025
Мир веб-разработки за последние десять лет претерпел коллосальные изменения. Переход от традиционных многостраничных сайтов к одностраничным приложениям (Single Page Applications, SPA) — это. . .
Реализация шаблонов проектирования GoF на C++
NullReferenced 04.05.2025
«Банда четырёх» (Gang of Four или GoF) — Эрих Гамма, Ричард Хелм, Ральф Джонсон и Джон Влиссидес — в 1994 году сформировали канон шаблонов, который выдержал проверку временем. И хотя C++ претерпел. . .
C# и сети: Сокеты, gRPC и SignalR
UnmanagedCoder 04.05.2025
Сетевые технологии не стоят на месте, а вместе с ними эволюционируют и инструменты разработки. В . NET появилось множество решений — от низкоуровневых сокетов, позволяющих управлять каждым байтом. . .