Учебник хакера


Softice - часть 16


Для этого вызовем на редактирование точку останова, поставленную на функции LockWindowInfo:

:BPE 0

в нижней строке командного окна появиться строка:

:BPX LockWindowInfo

и курсор установиться в конце строки, теперь можете редактировать точку останова по своему усмотрению, в конце строки добавьте следующее условие: IF ESP->4 == 00000730 и нажмите Enter.

Точка останова теперь будет выглядеть так:

:BPX LockWindowInfo IF ESP->4 == 00000730

То есть она будет срабатывать тогда, когда двойное слово по адресу ESP+4 будет равным числу 00000730, которое соответствует дескриптору окна POLYDEMO. Проверьте командой BL, соответствует ли точка останова заданной, запускайте приложение и убедитесь, что вся эта конструкция замечательно работает.

Установим точку останова на доступ к первому двойному слову данных экземпляра окна POLYWINDOW. Как уже отмечалось выше, входным аргументом для функции LockWindowInfo является дескриптор окна, выходным адрес данных экземпляра окна. После срабатывания точки останова поставленной на функции LockWindowInfo с параметром соответствующим дескриптору окна POLYWINDOW, на выходе функции будем иметь адрес данных экземпляра окна POLYWINDOW, по этому адресу и поставим точку останова на доступ к памяти.

Для того чтобы получить адрес данных экземпляра окна, выполним программу до строки с номером 57 (в файле WININFO.C):

:G .57

функция возвращает 32-битное значение (в нашем случае адрес) в регистре EAX, поэтому можно используя команду BPMD (BreakPoint Memory Dword) и значение адреса в регистре EAX, поставить точку останова на доступ к первом слову данных экземляра окна POLYDEMO:

:BPMD EAX

Эта команда использует регистры аппаратной отладки встроенные в процессор для отслеживания чтения и записи двойного слова по указанному линейному адресу. В данном случае это первое слово данных экземпляра окна POLYDEMO. Используйте команду BL что бы проверить правильность установки точки останова.

:BL

00) BPX LOCKWINDOWINFO IF ((ESP->4)==0x00000730)




Начало  Назад  Вперед