Сейчас на форуме: _MBK_, asfa, Rio (+5 невидимых)

 eXeL@B —› Вопросы новичков —› int3 trap, бряки
Посл.ответ Сообщение

Ранг: -0.5 (гость)
Активность: 0=0
Статус: Участник

Создано: 05 мая 2009 11:08
· Личное сообщение · #1

Возник вопрос, при патчинге любой инструкции в памяти на int3(0xCC), предположим по адресу 0x12345, я жду появления события waitfordebugevent, далее делаю свое дело и по идее востанавливаю работу программы через ContinueDebugEvent. Так вот, посел ContinueDebugEvent процессор выполняет дальше инструкцию по адресу 0x12346 или же он выполняет по адресу 0x12345 опять?
Я так понимаю(по коду, что видел в инете. в разных статьях), что если я не уберу int3 - прога будет стоять на этом месте? Или же если там остается CC процессор идет дальше(извиняюсь, нету возможности почитать x86 архитектуру досканально, да и простое объяснение зачастую лучше)




Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 05 мая 2009 13:51
· Личное сообщение · #2

Так вот, посел ContinueDebugEvent процессор выполняет дальше инструкцию по адресу 0x12346 или же он выполняет по адресу 0x12345 опять?

Имеет смысл смотреть в отладчике регистр Eip, который ответственнен за текущую выполняемую
инструкцию, выполняешь строчку кода через F7/F8 (Step Into/Step Out)
и просматриваешь структуру CONTEXT

Code:
  1. CONTEXT context;
  2. context.ContextFlags=CONTEXT_CONTROL;
  3. //context.regEip


Подробно о debug API
wasm.ru/article.php?article=1001029

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes




Ранг: -0.5 (гость)
Активность: 0=0
Статус: Участник

Создано: 05 мая 2009 14:40
· Личное сообщение · #3

Наконец я дома и все под рукой - разобрался.
Да, после int 3 дебаггеры дружно переходят на следующую инструкцию, поэтому пришел к выводу что надо использовать getthreadcontext и setthreadcontext, с указанием нужного eip.

Всем спасибо.




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

Создано: 05 мая 2009 17:35
· Личное сообщение · #4

Если разобрался, тогда закрою топик.


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