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

 eXeL@B —› Вопросы новичков —› Чем можно прочитать строку из окошка?
Посл.ответ Сообщение

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

Создано: 04 февраля 2009 19:38
· Личное сообщение · #1

Знаю, что можно при помощи GetDlgItemTextA[W]. Ещё есть GetWindowTextA[W].

Вот у меня программа, написана на Borland C++. Есть поле для ввода строки в окошке. Нужно остановиться во время чтения этой строки. Фишка в том, что в этой программе нет импорта GetDlgItemTextA[W], а GetWindowTextA не используется именно в этом окошке (динамически ни одна из этих функций тоже не используется, уже проверил).

Прикрепил таблицу с импортом/экспортом из Olly. Может кто сможет подсказать в какую сторону искать? Заранее спасибо

P.S. Ещё остаётся метод поставить memory breakpoint на введённую строку, но потом тяжело перейти в секцию кода

6793_04.02.2009_CRACKLAB.rU.tgz - import.txt




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

Создано: 04 февраля 2009 20:08 · Поправил: coderess
· Личное сообщение · #2

SendMessage (WM_GETTEXT), SendDlgItemMessage(WM_GETTEXT), если выдается сообщение
о не правильности введенных данных, то бряк на сообщение (MessageBox(A/W)) и трасировка
до функции из которой вызывается. Чаще всего я использую бряк на данные в памяти.

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




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

Создано: 04 февраля 2009 21:12
· Личное сообщение · #3

coderess, спасибо, попробую



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

Создано: 04 февраля 2009 21:30
· Личное сообщение · #4

coderess, к сожалению и этот способ не сработал... SendMessage постоянно что-то отправляет, но не 0D (WM_GETTEXT) ;-(

Буду копать дальше



Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 05 февраля 2009 00:48
· Личное сообщение · #5

AlannY

coderess пишет: Чаще всего я использую бряк на данные в памяти.

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



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

Создано: 05 февраля 2009 13:16
· Личное сообщение · #6

F_a_u_s_t, практически так я и сделал Только вместо того, что бы смотреть в стек - поставил memory breakpoint на секцию кода, снял жёсткий бряк и запустил, немного потрассировал и оказался там, где хотел

А вообще, в моём случаи используется TControl::GetText функция из стандартной библиотеки Borland C++. Её IDA распознала, так что - был бы я умнее сразу бы догадался где копать



Ранг: 8.0 (гость)
Активность: 0.020
Статус: Участник

Создано: 05 февраля 2009 16:42
· Личное сообщение · #7

AlannY пишет:
GetDlgItemTextA[W]. GetWindowTextA[W].


GetDlgItemTextA - для ASCI
GetDlgItemTextW - для юникода




Ранг: 340.0 (мудрец), 22thx
Активность: 0.120
Статус: Участник
THETA

Создано: 05 февраля 2009 18:27
· Личное сообщение · #8

В более сложных случаях - через Point-H.

-----
Программист SkyNet



 eXeL@B —› Вопросы новичков —› Чем можно прочитать строку из окошка?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати