SendMessage WM_CREATE

Тема в разделе "WASM.HEAP", создана пользователем wsd, 11 июл 2008.

  1. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    почему он не получается?
    какая-то системная защита?
     
  2. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    что значит не получается?
     
  3. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    2FED
    не приходит :)
    у меня там в тестовой проге на это сообщение мессбокс повешан
    и он вызывается только один раз при системном вызове, а при моём нет :dntknw:
    посылаю ему WD_DESTROY - нормально принимается
    так-что есть тело - давай дело ;)
     
  4. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    короче смысл в чём
    это пока полудохлый концепт но может из него что-то получиться
    в своём большинстве программы в мессадже WM_CREATE инициализирую
    для себя ресурсы и очень крайне редко проверяют на повторный вызов
    WM_CREATE, т.е. пологаются на систему, что он точно 1 раз делается :)
    получается что можно завалить нужную программу нехваткой ресурсов
    при определённом количестве этих мессаджей :))

    хотел поэксперементировать на дыру "повторная инициализация с ликом(утечкой)"
    на фаерах и антивирусах, но застрял на своей тестовой задаче..
    получается винда всётаки не даёт посылать самому WM_CREATE, защищая
    проги, которые безоговорочно полагаются на его единственнй вызов.
    если всётаки винда даст посылать самому WM_CREATE, не ожидающей этого
    программе, это легко лечиться созданием флага инициализации в ней и его узанья.
     
  5. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Так а смысл, ну упадёт фаер или антивирус, а драйвер то останится функционировать
     
  6. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    2FED
    кому-то это может пригодиться ;)
    сейчас главная задача, что подопытный не принимает WM_CREATE
    от SendMessage приложения киллера
    может кто-объяснить почему и, если можно, как это обойти?
     
  7. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    очепятка это , на самом деле они и не отправлялись..
    да, это получается всё-таки защита винды для однократного вызова WM_CREATE
    в проге киллере после SendMessage гетластеррор даёт ERROR_ACCESS_DENIED
    т.е. получается есть список запрещённых сообщений?
    что-то не получается в мсдн найти правила ограничений на сообщения :dntknw:
    ни кто не подкинет ссылочки по теме правил запрещённых мессаджей?
     
  8. zhindos

    zhindos New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    142
    wsd

    Отправляй WM_CREATE потоком создавшим окно и будет тебе счастье :)
     
  9. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    zhindos
    неа :)
    он же не коммикадзе, чтобы сам себя вспороть.
    здесь рассматривается способ замочить другую программу чисто с помощъю мессаджей.
    подовляющее количество кодеров в обработке WM_CREATE в приложении рассчитывают
    на еденичную посылку этого мессаджа и не аккуратно пишет это обработчик.
    в коде не проверяется выделены ли какие ресурсы, а сразу начинают выделять
    новые. косяк!!! если ресурсы уже были выделены, то при получении повторно
    этого мессаджа нужно в холостую вернуться или опять выделить, но предворительно
    освободив выделенные для этого ресурсы. вот на этой утечке ресурсов и
    строиться предпологаемая атака. т.е. выделяет новые, а старые теряются :)

    и что-бы это осуществить надо как-то проталкивать жертве WM_CREATE.
    просто SendMessage это сделать не получается.
    я до этого случая и не подозревал что винда может грохать
    некоторые мессаджы - типа моего WM_CREATE
     
  10. zhindos

    zhindos New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    142
    wsd

    В общем вызываешь SetWindowsHook(Ex), описание в MSDN, там есть параметр - handle модуля и указатель на ф-ию ловушки с определенной сигнатурой. Для этого перед этим пишешь Dll-ку, где экспортируешь эту-самую ф-ию ловушки. Тип ловушки - лучше всего WH_GETMESSAGE, при этом твоя ф-ия вызывается каждый раз после того, как GetMessage извлекает очередное сообщение из очереди. И уже в этой ф-ии делай, зная hwnd, посылай хоть 100000..... раз свой WM_CREATE...

    З.Ы Твоя проблема была в том, что в Windows с объектами-окнами некоторые операции(такие как урывание его и/или
    посылка WM_CREATE/WM_DESTROY) может осуществлять только поток, создавший окно, есле это не так, то ошибка будет, как ты и написал - ERROR_ACCESS_DENIED

    З.З.Ы Зато в винде при переходе на 32-битную платформу сохранили механизм ловушек, что позволяет иногда делать забавные вещи :)
     
  11. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    zhindos
    с WM_CREATE да, а на счёт WM_DESTROY ты погорячился.
    у меня WM_DESTROY прекрасно всё чужое мочит.
    это я знаю и к теме это ни как не относиться
    может есть какой не стандартный способ послать WM_CREATE ? или тему можно
    грохнуть
     
  12. zhindos

    zhindos New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    142
    wsd

    а на счёт WM_DESTROY ты погорячился.

    Да :dntknw:

    у меня WM_DESTROY прекрасно всё чужое мочит.

    А что он у тебя мочит? Это сообщение само по себе не разрушает окно, а только шлется после того, как окно разрушено ф-ией DestroyWindow. Единственное, если в его обработчике прописано что-нибудь типа PostQuitMessage или ExitProcess, что обычно пишется в WinProc-e "главного" окна приложения.

    может есть какой не стандартный способ послать WM_CREATE ?

    А это какой??? :) И чем тебе не нравится вышеописанный способ?
     
  13. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    zhindos
    по хендлу главного окна любой заданной проги
    этот?
    и если я туда врежусь, то после этого есть миллион более коротких cпособов замачить и
    мессадж WM_CREATE становиться не актуальным ;)
    я ищу способ именно чисто меседжом, без внедрения завалить, но похоже болт :dntknw:
     
  14. zhindos

    zhindos New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    142
    wsd

    FindWindow -> GetWindowThreadProcessId -> OpenProcess -> TerminateProcess :)
     
  15. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    zhindos
    это не единственный способ
    досадно что с месаджем не катит - красиво бы валились ;(
    исправляется этот баг реанициализации с утечкой легко, но его дочерта есть :))
    Спасибо за участие!

    Тему грохните, толку от неё 0