подмена стека. что может быть после?

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

  1. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    нужен большой стек. В 20 метров.
    Изначально в параметре линковщика задать никак. Потому как программа, куда вклинивается наш код, - чужая.

    Вопрос. Какие последствия могут быть, если просто подменить стек, т.е.
    esp = VirtualAlloc(....); а далее, не восстанавливая его, передать управление на старую точку входа программы?

    Обращений к стеку много. Поэтому если заменить на простые обращения по указателю, равному VirtualAlloc, код увеличивается сильно. Что в моем случае не допустимо.
     
  2. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    nitrotoluol
    Зачем тебе стек то менять ?
     
  3. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    nitrotoluol
    он же помойму сам динамически расширяется без подшаманивания
     
  4. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Дык. Как динамически. Есть выделенная память под стек и зарезервированная.

    Вот метров в 20-50 даже зарезервированной не хватает
    Переполнение происходит.
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Зарезервированная память под стек фикс. размера. Задается в ЕХЕ в optional header - поля StackReserve, StackCommit.

    nitrotoluol
    Кстати,а зачем нужен тебе большой стек?
     
  6. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    мож если твой алгоритм рекурсивный в итерационный перебабахать.

    Точно не помню CreateThread резервирует дополнительно или нет стак, или из уже
    резервированной берёт. сейчас мсдн под рукой нет:dntknw:
     
  7. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    неа
    поток должен быть один
     
  8. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Выделение другого места под стек может закончится тем, что не будет работать SEH
     
  9. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Great
    я уже об этом думал...
    Думаю, это не так критично
     
  10. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    http://rsdn.ru/article/baseserv/stack.xml
     
  11. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    IceStudent
    спасибо конечно
    но как это реализовать я сам знаю... :) интересовали подводные камни, которые от этого могут возникнуть в постороннем приложении.
     
  12. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    nitrotoluol
    Либо подменить размер в заголовке. либо создать новую ветвь, и указать сколько ей стека надо.
     
  13. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    asd
    ой еееееее.........
    убейте меня ап стену! я тупая афца блииин.

    да 100 пудоф. Код еще короче будет. Респект )

    Тема закрыта
     
  14. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    nitrotoluol
    тебе об этом ещё Great в #5 писал:)
     
  15. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    nitrotoluol
    Там просто есть пункт "проблемы" и обсуждение статьи на форуме.