Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Работа с SoftIce'ом  (Прочитано 15532 раз)
0 Пользователей и 6 Гостей смотрят эту тему.
Rulik
Помогающий

ru
Offline Offline

« : 09-11-2005 02:53 » 

Люди поможите плз.

Собираю драйвер с помощью DDK-XP (build).

Вот и вопрос как в SoftIce Загрузить исходный текст драйвера для отладки.
Как ни пытался нчего не получилось.
Пытался SymbolLoader открыть драйвер *.sys говорит что отладочная информация не обнаружена.

А хотелось бы видеть в окне Ice'а С-ный текст драйвера.
« Последнее редактирование: 19-12-2007 18:18 от Алексей1153++ » Записан
IRP
Постоялец

ua
Offline Offline

« Ответ #1 : 09-11-2005 08:45 » 

Компилишь драйвер с отладочно
Записан
IRP
Постоялец

ua
Offline Offline

« Ответ #2 : 09-11-2005 08:56 » 

Компилишь драйвер с отладочной информацией checked build.
Записан
Rulik
Помогающий

ru
Offline Offline

« Ответ #3 : 09-11-2005 09:11 » 

Компилирую с настройками Check, build создает какойто файл еще *.pdb но СофтАйс его вообще никак не воспринимает, может есть какая прога для трансляции в СофтАйс?
Записан
IRP
Постоялец

ua
Offline Offline

« Ответ #4 : 09-11-2005 09:31 » 

Правильно делает. У него свой nms - файл. Теперь на этот скомпиленный с checked build sys файл натравливаешь Symbol loader и жмешь кнопочку Translate и если pdb файл есть, то он на основе его сгенерит nms файл - который можно загрузить в Айс с помошью кнопочки Load
Записан
Rulik
Помогающий

ru
Offline Offline

« Ответ #5 : 10-11-2005 02:39 » 

Не подскажешь как конкретно.
Руководство для чайника надоть.  Ангел

Я все время отлаживал c ASM-исходниками, а тут сишную прогу неудобно отлаживать в таком виде.
Записан
IRP
Постоялец

ua
Offline Offline

« Ответ #6 : 10-11-2005 09:47 » 

Конкретно что? подгрузить симовлы или отлаживать?
Загрузка символов. Компилим отладочную версию драйвера, можно с помошь build'а можно с помошью Visual Studio кому как нравится. Затем следим чтобы сгенерировался при компиляции pdb файл. Затем открываем symbol Loader и делаем так: File->open открываем драйвер (sys). Затем Module->Translate. Если Symbol Loader не сможет определить путь к исходникам то выдает соответсвующее окно, где попросит указать путь к файлу самостоятельно. Можно перед тем сделать Translate сделать так: Module->Settings в появившемся открыть вкладку Translation и поставить галочку Package source with symbol table, в этом случае исходники будут записаны в nms файл, что удобно при отладке в момент загрузки системы. После того как сгененрировался nms файл делаешь так Module->Load и все.
Для проверки того что симовлы Айс подхватил набкрешь в отладчике команду table или exp
далее модно пользоваться командой file после которой указываешь имя файла исходников и Айс отобразит его. Можно ставить точки останока и отлаживать также как и в Visual Studio. Можно пользоваться командой "u имя функции" чтобы перейти к ней. Ну и так далее.. Удачи.
« Последнее редактирование: 19-12-2007 18:22 от Алексей1153++ » Записан
Rulik
Помогающий

ru
Offline Offline

« Ответ #7 : 15-11-2005 08:59 » 

IRP
Спасибо за помощь, разобрался и загрузил исходник драйвера. Но как поставить бреак поинты на код драйвера.
С приложением все просто Запускаешь трассировку и пошел.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 15-11-2005 09:22 » 

_asm int 1;
или
_asm int 3;


а софтайсе включаешь
Set i1here on
или
Set i3here on

третье прерывание традиционно используют для отладки приложения. первое для дров.
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
IRP
Постоялец

ua
Offline Offline

« Ответ #9 : 15-11-2005 11:16 » 

int 3 можно использовать и там и там.
Командой i3here on Вы просите SoftIce перехватывать обработку исключений из 3 кольца, а не только из нулевого.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 15-11-2005 12:29 » 

ток не исключений, а 3-го прерывания (int 3)!
макрос DebugBreak() - он же вызов int 3.

в случае если паралельно используете два различных отладчика приложения и драйвера: в драйвере используйте для BP - int 1. включая в софт айсе i1here on.
Отладчики приложений используют int 3. если надо чтоб отладчик приложения ловил свои бряки - выключите i3here off. иначе бряки приложения поймает софтайс.

Так же софтайс можно настроить на обработку прерываний int 3 только в системной памяти (драйвера, ядро и сервисы) >2Гб (3Гб для XP? - не знаю..) - не пробовал.

Советую в драйверах использовать для бряков макрос типа
#ifdef DBG _asm int 1;

и СОВЕТУЮ хотя бы мельком просмотреть хелп софтайса...
или хотя бы в софтайсе "h" проглядеть...

блин пока писал ответ... KeBugChekEx... совсем система дохлая)
к слову о "Fault on"....  -это как раз ПЕРЕХВАТ исключений...
« Последнее редактирование: 15-11-2005 12:31 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Rulik
Помогающий

ru
Offline Offline

« Ответ #11 : 17-11-2005 02:25 » 

Спасибо за помошь. Вроде заработало.
Ice стабильно останавливает на бряках драйвера (DbgBreakPoint()), но вижу я не сишный код а ассемблер.
Хотя делал в Айсе команду FILE и он мне написал, что в память загружен ххх.с, т.е. исходник у него есть.
Я попытался сделать так:
 1.Запустил команду DRIVER и нашел начало своего драйвера в памяти.
 2.Запустил ATTACH 0хХХХХХХ [исходник].с
 3.Нажимаю F3 и о радость вся система висит колом.

(Всю последовательность проделывал во время стоянки на бряке.)

Чаво я как чайник не так сделал?
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 17-11-2005 10:22 » 

используйте Symbol Loader для загрузки отладочной информации.
плюс у него кучка кнопок - в том числе, относящихся к загрузке исходного кода, только символов и т.д...
поиграйтесь с настройкой.
"Трансляте символ и соурс"
"промпорт фор соурсе"
и т.д.
далее софт айс должен сам разобраться...
для проверки - после загрузки символов, по команде sym -выведет все процедуры и функции
по команде соурсе - все файлы листинга... кажись если не путаю
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
IRP
Постоялец

ua
Offline Offline

« Ответ #13 : 18-11-2005 10:49 » 

Проверь где находятся загруженные символы и загзузились ли они вообще.
Для этого есть команда sym которая выдает активную на данный момент таблицу символов. Если она пуста - значит ты символы не подгрузил.
Если все же символы есть, но "С" кода ты не видишь, то посмотри куда Айс загнал эти символы.
Есть команда exp [имя какой нибудь переменной] есть Айс правильно загрузил символы то он должнен знать адрес этой переменной. Если он ее нашел глянь ее адрес и сравши с адресом загрузки твоего драйвера - команда mod [имя драйвера]. Если адрес символа не совсем совпадает с адресом загрузки модуля, то ты немного поствил в тупик Айс и он не смог загрузить символы по правильному адресу. Такое возможно если твой драйвер имет одноименное имя с каким то другим модулем (напрмер dll). Можно поиграться с командой symloc но чтобы все сделать правильно нужно почитать докумендацию либо переименовать драйвер Ага
Записан
Rulik
Помогающий

ru
Offline Offline

« Ответ #14 : 22-11-2005 04:01 » new

2 IRP
 Спасибо. У меня действительно имя модуля совпадало с модулем установленным в системе.
 Изменил имя и все поехало.
Еще раз пасиб.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines