| Сейчас на форуме: _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 | 
| Эта тема закрыта. Ответы больше не принимаются. | 






 Для печати