Неверная работа отладчиков с сообщениями, в частности OllyDbg и Syser

Тема в разделе "WASM.BEGINNERS", создана пользователем smex, 11 сен 2007.

  1. smex

    smex New Member

    Публикаций:
    0
    Регистрация:
    11 сен 2007
    Сообщения:
    6
    Добрый день всем. Собственно перерыл всю документацию, поднял архивы форума, но так конкретного вопроса не нашел на свой вопрос:
    как такое возможно, что установив бряк на Edit (на оконную процедуру данного контрола) не отлавливаются сообщения WM_GETTEXT и другие, которые отчетливо видны с помощью Spy++. То есть Spy++ видит сообщение WM_GETTEXT, а отладчики нет. Отладчики видят только WM_Paint и мышиные сообщения. Помогите ответить на этот сверх сложнейший вопрос . В аттаче та злополучная прога, у которой на которую пасуют дебагеры!
    ЗЫ То есть если в двух словах вопрос - как поймать WM_GETTEXT или это глюк всех существующих отладчиков (а может все дело в кривых руках)? Заранее спасибо за внимание.
     
  2. Geen

    Geen New Member

    Публикаций:
    0
    Регистрация:
    23 июл 2007
    Сообщения:
    51
    не понял ... у тебя есть обработчик сообщения вм_геттекст , но ты так и неможешь поймать , когда он начинает отрабатывать ?
     
  3. Veter

    Veter New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    161
    посмотри урок икзелиона по едиту - окно получает только часть сообщений, остальные - обрабатываются внутри ос. может попробовать субклассировать едит?
     
  4. smex

    smex New Member

    Публикаций:
    0
    Регистрация:
    11 сен 2007
    Сообщения:
    6
    Veter если можно поподробнее что ты хотел сказать.

    Geen: Попробую объяснить ситуацию еще раз. Веду эксперементы над прогой из 9 туториала IceZelon. Там edit в Spy++ точно получает сообщение WM_GETTEXT, но когда ставлю бряк на оконную процедуру едита (находится в высших адресах памяти >7...) ловятся сообщения едиту только от мышки и от клавы, а WM_GETTEXT отладчики не ловят. Могу записать демку как и что я делал.
     
  5. Veter

    Veter New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    161
    Оконная процедура стандартного системного едита получает не все сообщения - так решили ребята из мелкософта - им нужно было обеспечить многозадачность. Посмотри в оле урок Сабклассинг.Потом расскажешь ...
     
  6. smex

    smex New Member

    Публикаций:
    0
    Регистрация:
    11 сен 2007
    Сообщения:
    6
    Veter а вот это для меня новость. Большое спасибо за ответ - наконецто первый форум на котором дали конкретный ответ. Тогда это все объясняет почему WM_GETTEXT не ловится никакими отладчиками в оконной процедуе. Пойду изучать сабклассиг, надеюсь разберусь.
     
  7. smex

    smex New Member

    Публикаций:
    0
    Регистрация:
    11 сен 2007
    Сообщения:
    6
    Извини за возможно тупой вопрос - но не подскажеш где лучше почитать про то что ты говорил.
    В кратце я понял из урока IceZelion что такое сабклассинг:

    Тепеpь мы можем pассмотpеть то, каким обpазом пpоисходит сабклассинг окна. Заметьте, что сабклассинг неогpаничивается контpолами, он может использоваться с любым окном. Давайте подумае о том, как Windows узнает, где находится пpоцедуpа edit box'а. Hу?.. Поле lpfnWndProc в стpуктуpе WNDCLASSEX. Если мы сможем поменять значение этого поля на адpес собственной стpуктуpы, Windows пошлет сообщение нашей пpоцедуpе окна вместо этого. Мы можем сделать это, вызвав SetWindowLong.

    Но я исследу программу из 9 туториала IceZelion размером 4кб и там точно нет этого (адрес оконной процедуры не меняется). Так как же разобраться?

    Про то что стандартный контрол получает в свою оконну процедуру только часть сообщений нигде ни слова! А сабклассинг олучается это смена адреса оконной процедуры - чего у меня точно нет. И как же поставить этот бряк на WM_Gettext, который SPY++ отлично видит?
     
  8. Geen

    Geen New Member

    Публикаций:
    0
    Регистрация:
    23 июл 2007
    Сообщения:
    51
    вот , может быть еще новость ... но очередь сообщений (стек мсг структур) не помню точно , но где то по адресам 7ххххххх находится ... сам не писал , но видел подобные проги. если конечно наличие структуры сообщения геттекскт к твоему процессу (окошку) в виде слива каких то данных с него тебе может что то дать.
     
  9. Veter

    Veter New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    161
    Есть серия интересных статей - как-бы начинающий исследует уроки Икзелиона с помощью отладчика. Оказывается там не всё так просто.... А конкретно с текстом - вроде бы видел в какой-то статье , что никто точно не знает, где и когда появляется текст и какая структура этим занимается ...Но появляется он до WM_PAINT - в 5, кажется, уроке, что очень странно...
    Я помочь не могу, сори, с олей пока не умею работать - открою её потыкаю кнопки - ничо непонятно, глаза закрываюся и .....Пока моё подсознание категорически отказыватеся воспринимать всё это...
    дошло до того, что начал писать собственный отладчик - так проще и легче разобраться ...
     
  10. smex

    smex New Member

    Публикаций:
    0
    Регистрация:
    11 сен 2007
    Сообщения:
    6
    Geen тебе тоже спасибо что пытаешся помочь, но твой ответ не сильно помогает ответить на мой вопрос.
    Veter если можеш дай ссылку на статьи про которые ты говорил или опиши в любом отладчике как это отловить - умею работать почти со всеми.
     
  11. Veter

    Veter New Member

    Публикаций:
    0
    Регистрация:
    23 дек 2006
    Сообщения:
    161
    Как-то скачал Rootkin`a - 15 метров и 90% мусора там( мусором я считаю всё, что связано с "исследованием программ в исследовательских целях", т.е ,говоря юридическим языком, - взлом с использованием технических средств), эти статьи там были , и потом увидел их здесь на форуме. Сори - они где-то в архиве, щас не могу найти ....
     
  12. smex

    smex New Member

    Публикаций:
    0
    Регистрация:
    11 сен 2007
    Сообщения:
    6
    Вот блин. Ну что ж этот невероятно сложный вопрос, часто задававшийся на крэклабе и тут так без ответа. Буду надеяться что все таки есть люди которые смогут объяснить в какую сторону надо мыслить. Вопрос остается открытым - с нетерпением жду ответов.