możesz użyć narzędzi do debugowania maszyny wirtualnej (lub gdb / czegoś innego) do bezpośredniego odczytu pamięci. ms-dos nie ma ochrony pamięci ani nie jest systemem wielozadaniowym, więc możesz odczytać pamięć maszyny wirtualnej, możesz odczytać vga maszyny wirtualnej do wprowadzenia.
dokumentacja mówi, że istnieje polecenie
info vgatext -- print the contents of the VGA framebuffer formatted as standard text mode
poprawna składnia do uzyskania danych wyjściowych to: uruchom VirtualBox --debug --startvm msdos1.25
, a następnie w konsoli debuggera:
info vgatext
wyniki wklejania kopii:
The COMPAQ Personal Computer DOS
Version 1.11
(C) Copyright COMPAQ Computer Corp. 1982
(C) Copyright Microsoft 1981, 82
A>
--------------------------------------------------------------------------------
VBoxDbg>
Możesz więc napisać skrypt debugera, który zaczepia o wartość pamięci w pamięci programu i zrzuca ekran vga, gdy program wysyła dane wyjściowe / lub możesz napisać skrypt, który wstrzymuje procesor, konsekwentnie zapisuje zawartość, jeśli zmiany danych wyjściowych, zapisuje zaktualizowaną treść, kontynuuje uruchom procesor
Niektóre opcje do zbadania to:
dowiedz się, jak napisać skrypt debugowania w celu zrzucenia zawartości pamięci aplikacji
znaleźć jakieś rozwiązanie debugowania sterownika vga / portu szeregowego / zrzutu pamięci dla quemu / dosbox / virtualbox
znajdź jakiś stary program narzędziowy z lat 80., który może ktoś tam napisał w tym celu
dodaj tutaj tag freedos (lub nawet przenieś / powtórz pytanie na dużym przepełnieniu stosu, przypuszczam, że niektórzy guru powinni wiedzieć coś o takich problemach
Będę aktualizować później, jeśli znajdę coś interesującego, ale czy możesz ujawnić niektóre szczegóły, dlaczego używasz 1.25, czy ten program działa na nowszych wersjach msdos? Założę się, że możesz znaleźć młodego hakera montażu, który chciałby załatać ten program do nowszej wersji (lub dodać plik wyjściowy z asmem) za niewielką opłatą