"ED!SON (пер. Mr.Boco). Как ломать программы Windows" - читать интересную книгу автора

GetDlgItemText GetDlgItemTextA, GetDlgItemTextW

Последняя буква в названии 32-битных функций говорит о том, какие строки
использует эта функция: однобайтовые или двухбайтовые. Двухбайтовые
строки используются ОЧЕНЬ редко.
Возможно, что Вы уже уловили мою мысль. "Если бы можно было прерваться по
вызову GetWindowText..." - и Вы МОЖЕТЕ это сделать!!! Но сперва Вы должны
убедиться, что символьные имена (имена функций) загружены SoftICE'ом. Если
Вы не знаете, как это сделать - см. приложение A.

Чтобы установить "ловушку" (на самом деле это называется точкой останова
или брейкпоинтом) в SoftICE, Вы должны зайти в отладчик нажатием клавиш
Ctrl-D и использовать команду BPX. В качестве параметра команды можно
использовать либо имя функции, либо непосредственно адрес. Так как наш
"объект изучения" (Task Lock) является 32-битным приложением, мы должны
поставить брейкпоинт на функцию GetWindowTextA. Если это не поможет,
попробуйте поставить брейкпоинт на другие функции.
В командной строке SoftICE наберите следующее:

:bpx getwindowtexta

Если Вы получите сообщение об ошибке (например, "No LDT"), убедитесь, что
в фоне у Вас не выполняются никакие другие приложения. Я заметил, что
Norton Commander в фоне является причиной подобного поведения SoftICE.
Вы можете проверить наличие брейкпоинтов командой:

:bl

В результате Вы увидите что-нибудь типа:

00) BPX USER32!GetWindowTextA C=01

Чтобы выйти из отладчика, нажмите Ctrl-D (или F5) еще раз.

Продолжим... Итак, Вы установили брейкпоинт и теперь SoftICE будет
"выскакивать" при каждом вызове функции GetWindowTextA. Попробуем ввести
какое-нибудь значение в окне регистрации и нажмем OK. Вы нажимаете OK...
...и получаете дурацкое сообщение о том, что Ваш код был неправильным.
Значит, это была не функция GetWindowTextA... Попробуем GetDlgItemTextA.
Удалим старый брейкпоинт:

:bc 0

(0 - это номер брейкпоинта в списке брейкпоинтов)

И установим новый:

:bpx getdlgitemtexta

Ну что ж, попробуем еще раз...