Всем доброго времени суток. Разбираюсь с эмулятором Bochs и немного запутался. Есть образ Win_98 для Bochs. Запускаю его файлом bochs.exe - запускается Windows 98 в которой можно работать. Могу запустить этот образ файлом bochsdbg.exe, поставить бр. поинт в загрузчике где-нибудь в районе 0x7C00 и начать отладку. Теперь вопрос: Внутри образа Win_98 есть папка ABCD, в которой находится файл Proba.exe (не важно, это может быть и блокнот). Возможно ли с бр. поинта на адресе 0x7C00 в загрузчике, перескачить на бр. поинт файла Proba.exe и продолжить отладку? Если да, то как узнать адрес файла Proba.exe в образе, чтобы поставить на него бр. поинт? Т.е. меня интересует насколько свободно можно перемещаться в образе файла Win_98 ( загрузчик - kernel(R0) - User Mode(R3) ). И самое главное, если перемещение возможно, то как найти адрес файла Proba.exe в User Mode и поставить на него BP?
Аду настрой и будет тебе счастье. А если без неё то Я бы открыл образ в WinHex извлёк бы Proba.exe далее открываем его не знаю тем же winHex или Ольке. Находим точку старта. Запоминаем 4 байта Патчим кодом "66 87 db" XCHG BX,BX И всё на magic brakpoint bochsdbg остановится. Далее записываем обратно запомненные 4 байта
Pavia, спасибо вам от меня! Вопрос действительно интересный. А я все думал, почему вы не отвечаете или TermoSINteZ? Да и, по-моему, Хошимин должен знать ответ. Потом думаю, сам поэксперементирую и помогу человеку. Ага щас! В общем, сделал образ Windows 98, создал там папку и разместил там файл Proba.exe. Причем, первой командой в файле Proba.exe идет именно "66 87 db" XCHG BX,BX. В настройках Боша, естественно, включил реакцию на команду "66 87 db" XCHG BX,BX - и нифига - не реагирует на нее BOCHS. Потом, думаю, может она должна быть 16-битной ("87 db" XCHG BX,BX) и тоже никакой реакции со стороны Боша. Не могу сообразить, где я делаю ошибку?
extravert, в конфиге пропишите "magic_break: enabled=1" Только многозадачность вам не даст нормально отлаживать.
Pavia, спасибо за то, что откликнулись. Вы уж совсем-то из меня выпускника двух классов церковно-приходской школы не делайте, я же все-таки не в одной стране с Лукашенко живу. "magic_break: enabled=1" - это первое, что я прописал перед началом эксперимента. Я даже не знаю, что у меня было но второй раз все проверил, запустил и magic_break сработал. Т.ч. ТС можно смело рекомендовать, чтобы все повторял за нами и все получится. А вот еще такой вопрос: Я открыл в Hex-редакторе образ с Windows 98 и нашел, допустим, по адресу 0x01C60400 нужное место в коде. Какой командой прописать бр. поинт в BOCHS, чтобы он сработал в этом месте кода? Там же есть брейк поинты виртуальные, линейные и физические. Я пробовал на всех и не срабатывает, может быть глюк какой был и еще раз попробовать?
Pavia, extravert, спасибо за помощь и участие. Извиняюсь за то, что долго не отвечал, был немного занят. С "magic_break: enabled=1" все срабатывает, а варианты с breakpoint-ми (которые линейные, виртуальные и физические) - нет. Но я думаю, что так наверное и должно быть, потому что у нас же код сначала работает в Real Mode, затем в Protect Mode, система адресации, по-моему, меняется и сделать какое-то относительное соответствие адресам, которые у нас в Hex-редакторе - не получится. Ну, Pavia поправит если ошибаюсь. А что за ADA? Объясните пожалуйста, если не трудно. Здесь тоже, если не трудно, объясните в чем проблема. Хочется получше разобраться в особенностях такой отладки.
А вопросы ТС достаточно интересные. Неужели никто больше не знает, коль у Pavia эта информация засекречена? Мне, например, про Aда любопытно и почему многозадачность не даст нормально отлаживать? Да и про брейк поинты, если бы кто пояснил немного, был бы благодарен.
Подниму тему, чтоб не затерялась под натиском каких-то мифических сплойтов, которые в соседних ветках.