Уроки Iczelion'а




Урок 29. Win32 Debug ApI II - часть 3


regGs dd ? regFs dd ? regEs dd ? regDs dd ?

;------------------------------------------------------------------------ ; Эта секция возвращается, если ContextFlags содержит значение ; CONTEXT_INTEGER ;------------------------------------------------------------------------

regEdi dd ? regEsi dd ? regEbx dd ? regEdx dd ? regEcx dd ? regEax dd ?

;------------------------------------------------------------------------ ; Эта секция возвращается, если ContextFlags содержит значение ; CONTEXT_CONTROL ;------------------------------------------------------------------------

regEbp dd ? regEip dd ? regCs dd ? regFlag dd ? regEsp dd ? regSs dd ?

;------------------------------------------------------------------------ ; Эта секция возвращается, если ContextFlags содержит значение ; CONTEXT_EXTENDED_REGISTERS ;------------------------------------------------------------------------

ExtendedRegisters db MAXIMUM_SUppORTED_EXTENSION dup(?) CONTEXT ENDS

Как вы можете видеть, члены этих структур - это образы настоящих регистров процессора. Прежде, чем вы сможете использовать эту структуру, вам нужно указать, какую группу регистров вы хотите прочитать/записать, в параметре ContextFlags. Hапример, если вы хотите прочитать/записать все регистры, вы должны указать CONTEXT_FULL в ContextFlags. Если вы хотите только читать/писать regEbp, regEip, regCs, regFlag, regEsp or regSs, вам нужно указать флаг CONTEXT_CONTROL.

Используя структуру CONTEXT, вы должны помнить, что она должна быть выровнена по двойному слову, иначе под NT вы получите весьма странные результаты. Вы должны поместить "align dword" над строкой, объявляющей эту переменную:

align dword MyContext CONTEXT <>

Пpимеp:

Первый пример демонстрирует использование DebugActiveprocess. Сначала вам нужно запустить цель под названием win.exe, которая входит в бесконечный цикл перед показом окна. Затем вы запускаете пример, он подсоединится к win.exe и модифицирует код win.exe таким образом, чтобы он вышел из бесконечного цикла и показал свое окно.




Содержание  Назад  Вперед