Есть программа, требующая ввода числа из окна ввода.
Можно ли с помощью Softice найти ту точку программы, к-я следует сразу за вводом, а еще лучше - первое обращение к введенному числу.
Если можно, то как?
Softice using help24.09.01 17:00 Автор: zelych Статус: Member
> Подскажите новичку. пожалуйста > > Есть программа, требующая ввода числа из окна ввода. > Можно ли с помощью Softice найти ту точку программы, к-я > следует сразу за вводом, а еще лучше - первое обращение к > введенному числу. > Если можно, то как?
bpx getwindowtexta или bpx getdlgitemtexta или что-то в этом роде..
когда выскочит SI - p ret
теперь можно посмотреть куда число пишется..
обращение к памяти:
bpm r xxxx:xxxxxx - остановится при чтении, вместо r можно w - запись по адресу или x - выполнение..
кажется так, может где-то и ошибся, точно не помню.
сорри, ошибочка24.09.01 17:03 Автор: zelych Статус: Member
> > если там число вводится, то скорее всего надо bpx > > getwindowinta или что-то в этом роде.. > > А какой системный dll содержит эти функции? Чтобы можно > было бы его подключить в loadere softica
Забудь про SymLoader, так как он нужен для подключения
отладочной символьной информации
которую ни один программист в трезвом уме и здравом рассудке
не будет вставлять в релиз программы
для того чтобы ты смог поставить бряк на какую либо API функцию
предварительно надо открыть файл winice.dat и раскомментировать строчки
следующего вида
после этого запускаешь свою программу
захдишь в sice и пишешь в зависимости от разрядности
ломаемого приложения
bpx GetWindowText или
bpx GetDlgItemText
ну и так далее
нажимаешь кнопку регистрации и если ты остановился то
все успешно, если нет то ставишь новый брекпоинт.
> А где можно найти список всех возможных функций Get... что > бы поочередно проверить какая из них используется? В MSDN недалеко от Edit.
Их не много широко используемых: GetWindowTextA(W), GetDlgItemTextA(W), GetDlgItemIntA(W) Больше и не припомню.
Но проблема в том, что этот текст можно получить и всякими левыми путями - WM_GETTEXT(ну это ещё нормально), а вот, например, совсем изврат: выделили текст EM_SETSEL а потом EM_GETSELTEXT.
Так что лучше ставь bp на область данных, в которые винда текст окна пишет :)