Сейчас на форуме: (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Каким образом реализованы hardware breakpoints в OllyDbg
Посл.ответ Сообщение

Ранг: 10.7 (новичок), 2thx
Активность: 0.060
Статус: Участник

Создано: 17 сентября 2014 13:59
· Личное сообщение · #1

Приветствую.

Каким образом реализованы hardware breakpoints в OllyDbg?

Сначала я думал, что алгоритм аналогичен тому, что описан в "GDB Internals" -- "Typically these work by having dedicated register into which the breakpoint address may be stored. If the PC (shorthand for program counter) ever matches a value in a breakpoint registers, the CPU raises an exception and reports it to GDB".

Вот, что я ожидал -- установив бряк на каком-либо месте в памяти, его адрес окажется в одном из debug registers (DR0-DR7), и приложение, встретив на своём пути попытку чтения / записи / выполнения инструкции по данному адресу, выбросит исключение, передав управление отладчику.

Однако на деле в DR0-DR7 не оказывается никакого адреса.

Почему? Что я делаю не так?

Заранее благодарю за возможные ответы.

Добавлено спустя 10 минут
Всё, понял:

http://winappdbg.sourceforge.net/HowBreakpointsWork.html

"Hardware breakpoints are implemented by writing to the debug registers (DR0-DR7) of a given thread, causing a single step exception to be generated when the given address is accessed anywhere in the code for that thread only. It’s important to remember the debug registers have different values for each thread, so this can’t be done global to the process (you can set the same breakpoint in all the threads, though)"




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 17 сентября 2014 14:55
· Личное сообщение · #2

Не устал ещё штамповать новые топики с вопросами? Особенно с теми, ответ на которые есть в любом мане/гугле.


 eXeL@B —› Вопросы новичков —› Каким образом реализованы hardware breakpoints в OllyDbg
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати