Адрес диалоговой процедуры

Тема в разделе "WASM.RESEARCH", создана пользователем K10, 23 апр 2009.

  1. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Как узнать адрес диалоговой (не оконной) процедуры диалогового окна, чтобы можно было поставить бряк на нее в отладчике?
     
  2. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Код (Text):
    1. HWND CreateDialogParam(          HINSTANCE hInstance,
    2.     LPCTSTR lpTemplateName,
    3.     HWND hWndParent,
    4.     DLGPROC lpDialogFunc,
    5.     LPARAM dwInitParam
    6. );
    lpDialogFunc и есть твоя процедура. Или не об этом вопрос?
     
  3. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    Протрейсить DispatchMessage до call [ebp + 8](или как-то похоже..)?
     
  4. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    censored
    Мне надо в чужом приложении, там диалог создается функцией CreateDialogIndirectParamA, я ее перехватывал, пытался ставить бряк на ее lpDialogFunc, но там что-то не то, и Олли пишет что outside the code section, и не вызывается она когда надо...

    Velheart
    Видимо примерно так и придется делать...
     
  5. dendi

    dendi New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2007
    Сообщения:
    233
    Код (Text):
    1. LONG GetWindowLong(
    2.   HWND hWnd,
    3.   int nIndex
    4. );
    GWL_WNDPROC Retrieves the address of the window procedure, or a handle representing the address of the window procedure. You must use the CallWindowProc function to call the window procedure.

    не оно?
     
  6. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    dendi
    Это будет оконная процедура, а нужна диалоговая
     
  7. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Немного переформулирую вопрос:
    Как мне отловить нажатие на кнопку в диалоговом окне?
     
  8. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    Можно просто запустить диалог, подсмотреть windowjugler'ом хэндлл диалогового окна, и поставить условный брэйк на dispatchmessage с WM_COMMAND и хэндлом нужного окна, а оттуда протрассировать пошагово(совсем не долго), пока не выйдешь из user32 обратно в исследуемый модуль, я примерно так искал id для меню, чтобы автоматизировать работу с процесс-монитором, котрый из коммандной строки не все опции поддерживает =)
     
  9. JCronos

    JCronos New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2009
    Сообщения:
    98
    OllyDbg -> (W)indows
     
  10. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    GetWindowLong (DWL_DLGPROC)
    свой proc
     
  11. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    JCronos, kero
    Мне нужен был адрес именно процедуры диалогового окна, а не оконной процедуры, адрес оконной процедуры в данном случае указывает на user32.DefDlgProc.
     
  12. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    K10, вы уж определитесь, что у вас "оконная процедура" - GWL_WNDPROC или DWL_DLGPROC :)
    И таки похексите с адреса из DWL_DLGPROC в приаттаченной болванке...
     
  13. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Уточнение: не в файле, а когда болванка в памяти.
     
  14. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    kero
    блин, я проглядел про DWL_DLGPROC :) Спасибо...