ViRUSICH
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Всем привет! Есть несколько проблем, связанных с SoftIce. Начну по порядку: Машина Duron 1200 Windows XP SP1 Установлена NuMega.DriverStudio.v2.7 Создал пробный файл Test.exe с помощью MASM32. Опции компилятора: \masm32\bin\ml /c /Zi /coff Опции компоновщика: \masm32\bin\Link /SUBSYSTEM:WINDOWS /DEBUG /DEBUGTYPE:CV /PDB:NONE Отрывок кода: .data MsgBoxCaption db "Test",0 MsgBoxText db "Get SoftIce!",0 MsgBoxText2 db "Get SoftIce!_2",0 .code start: WinMain proc push 0 push offset MsgBoxCaption push offset MsgBoxText push 0 call MessageBoxA push 0 push offset MsgBoxCaption push offset MsgBoxText2 push 0 call MessageBoxA retn WinMain endp ; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««« end start Загружаю этот exe-шник с помощью Simbol Loader. Все проходит нормально. Ставлю бряк на MessageBox: <bpx _MessageBoxA>. Программа запускается и выскакивает первый MessageBox. Тут возникает ПРОБЛЕМА № 1: Окно SoftIce не появляется автоматически, как это описывается в руководстве и бряк не перехватывается. Ладно, иду дальше, может я чего-то не понял... Вызываю сам окно SoftIce <Ctrl+D>. Команда <file *> показывает, что загружен "Test.asm". Команда <table> показывает, что активен "Idle" - бездействие системы. Даю команду <table Test>. Проверяю: даю команду <table> - теперь активна моя таблица. Окно кода SoftIce при этом не отображает ассемблированный текст моей программы. Все то-же самое проделываю с командой <addr>. Окно кода SoftIce все еще не отображает мой код. ПРОБЛЕМА №2 Как отобразить ассемблерный, не исходный, а именно ассемблерный код моей программы для пошагового прохождения в окне SoftIce. При нажатии F8 (трассировка программы), окно SoftIce сразу же устанавливает активным процесс <Idle>, что указывается в правом нижнем углу окна команд (где до нажатия клавиши SoftIce показывал активным мой процесс, только без отображения ассемблерного кода). Ладно, ставлю бряк на вызов MessageBoxA из моей программы, предварительно активировав свой процесс командами <table> и <addr>: bpx MessageBoxA. SoftIce нормально принимает мое пожелание. Скрываю окно SoftIce - <F5>. Теперь,по идее, при нажатии на кнопку "OK" моей программы, которая все еще продолжает отображать первый MessageBox, должен произойти вызов второго MessageBox (см. код) и произойти бряк на этот вызов. Так и делаю. Тишина... Открываю SoftIce. Активен процесс "Idle". Моя прога все еще загружена, о чем говорят команды <table> и <addr>. ПРОБЛЕМА №3 Почему не происходит перехват вызова функции MessageBoxA программой SoftIce. Большая просьба помочь мне разобраться с этими проблемами. Уже неделю мучаюсь. Заранее спасибо. E-mail: tch-vitaliy@yandex.ru P.S. Все то-же самое проделывал и с программой Gdidemo из каталога SoftIce. Эффект соответствующий. |