Сейчас на форуме: _MBK_ (+5 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Трассировка по F7 и F8 |
Посл.ответ | Сообщение |
|
Создано: 25 октября 2010 15:39 · Личное сообщение · #1 Пи трассировке по F7 на каждой инструкции возникает трассировочное исключение из за того что взведен трассировочный бит. А как работает трассировка по F8 особенно если такой код: 00F7A005 E8 01000000 CALL VideoCon.00F7A00B 00F7A00A CC INT3 00F7A00B 58 POP EAX 00F7A00C 89C3 MOV EBX,EAX В этой функции CALL VideoCon.00F7A00B находится код который модифицирует INT3 в такой код: 00F7A005 E8 01000000 CALL VideoCon.00F7A00B 00F7A00A 0058 89 ADD BYTE PTR DS:[EAX-77],BL И вообще как работает трассировка по F8 у Олли поскольку в этом случае она выдает исключение, а по F7 работает нормально. ----- Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше ![]() |
|
Создано: 25 октября 2010 16:25 · Личное сообщение · #2 |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 25 октября 2010 18:26 · Личное сообщение · #3 F7 - трасер с заходом в функцию (CALL), F8 - трасер без захода в функцию. В первом случае если eip на call, то следующей трассируемой инструкцией будет первая инструкция в функции по адресу CALL'а, во 2м случае трасер поставит прерывание на инструкции ниже CALL'а, сбросит флаг трассировки и дождется пока выполнится функция и управление всплывет на поставленном прерывании. gena-m пишет: И вообще как работает трассировка по F8 у Олли поскольку в этом случае она выдает исключение, а по F7 работает нормально. Скорее всего получается довольно забавная ситуация: Исключение попадает на INT3, код модифицирует олькино прерывание, поэтому по F8 отладчик его не получает, а обработчик остается до следующего прерывания, которое не имеет отношения к отладке, поэтому обработчик не знает что с ним делать, отладка срывается. ![]() |
|
Создано: 25 октября 2010 19:10 · Личное сообщение · #4 |
|
Создано: 25 октября 2010 19:52 · Поправил: gena-m · Личное сообщение · #5 Итого обобщаем: При трассировке по F8 Олли записывает INT3 поверх INT3, т.е в коде ничего не меняется а Олли записывает к себе в таблицу адрес этого INT3. При модификации этого кода просто не будет срабатывать бряк на адресе 00F7A00A и Олли вместо F8 фактически делает F9, пока не нарывается на другое исключение, которое к этому месту не имеет никакого отношения,вот такой вариант больше похож на то что происходит. Спасибо всем. ----- Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше ![]() |
|
Создано: 26 октября 2010 15:37 · Личное сообщение · #6 |
![]() |
eXeL@B —› Вопросы новичков —› Трассировка по F7 и F8 |
Эта тема закрыта. Ответы больше не принимаются. |