Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.05;
Скачать: CL | DM;

Вниз

Отладка   Найти похожие ветки 

 
alex134 ©   (2003-04-10 22:26) [0]

Доброго дня всем. Вопрос такой:
я пишу простой отладчик под Win (стандартные средства) для собственных нужд. Как реализовать механизм установки breakpointа на выполнение команды с определенным адресом "X" ? Некоторые говорят поставить в отлаживаемой программе, int 3 перед командой с адресом X. Но возможно ли такое прокрутить, и при этом не затереть другую команду? Как в таких случаях поступают?


 
Мимоходович   (2003-04-10 22:41) [1]

...в таких случаях, как минимум, дизассемблируют...


 
Alex134 ©   (2003-04-10 22:52) [2]

...говорят, что дизассемблированый годится только для анализа - заново его скомпилировать не получится (


 
Мимоходович   (2003-04-10 23:02) [3]

...ну и что, дык вы же отладчик пишете, или всё-таки вирь?...


 
uw ©   (2003-04-10 23:13) [4]

На место первого байта команды, перед выполнением которой тебе надо остановиться (адрес X), пишешь однобайтную команду int. То, что было в X и сам адрес X, запоминаешь (таких X может быть и много). Когда программа достигнет этого адреса, управление будет передано соответствующему обработчику прерывания. В обработчике исследуешь адрес возврата, который находится на вершине стека. Он должен быть на 1 больше одного из твоих X. Исследуешь регистры, переменные и т. д. Восстанавливаешь содержимое X. Пускаешь дальше. Как сдвинуться с точки останова – не трудно сообразить, если подумать.



 
Alex134 ©   (2003-04-13 23:56) [5]

Адрес возврата после команды int указывает на следующую команду. Т.е. он будет x+1. Следовательно, чтобы попасть на команду с адресом x возвращатся надо на байт раньше? Переписать в стеке IP на адрес x (или декрементировать на 1), я правильно понял?


 
Alex134 ©   (2003-04-15 17:55) [6]

up


 
uw ©   (2003-04-17 15:27) [7]

Правильно!



Страницы: 1 вся ветка

Текущий архив: 2003.05.05;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
7-12948
Yozch_
2003-03-12 23:11
2003.05.05
Как получить изображение со сканера (через TWAIN)


8-12833
arcoant
2003-01-29 15:25
2003.05.05
Equaliser & BitRate


1-12784
DDF
2003-04-22 10:40
2003.05.05
[Error] на значении Nil


1-12734
Cooper
2003-04-23 21:57
2003.05.05
Координаты указателя мыши в пределах Image


6-12851
ws
2003-03-11 16:42
2003.05.05
Помогите с сокетами...