Может подскажет кто

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

  1. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    Если в OllyDbq
    Внести с адреса 00401000

    PUSH EAX
    JMP SHORT 00401000
    RETN

    То EBP показывает не глубину стека, а адрес с которого начинает вносить в стек
    Самое начало стека его верхний адрес 12FF94

    В начале ESP показывает, что будет в носить в стек не с 12FF94, а с адреса 12FF8C
    Далее после выполнения команды останавливается на адресе 33000
    ESP показывает последний внесённый адрес как 33000, а не 000000

    Получается, что стек в данном случае равен с 12FF8C по 33000
    FCF8C - адресов по 32 byt dword

    Как стек увеличить
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    VictorV79
    1. Загрузить необходимые предалы в TEB. Предположу что сейчас вопрос возникнет как дефолтный размер стека определить - ProcessImageInfomation -> SECTION_IMAGE_INFORMATION.
    2. Обратитбся к сторожевой странице, ядро расширит стек на страницу, выполнить в цикле до необходимого размера.
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    *пределы
     
  4. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    Что нибудь скажите
    может вообще не по делу написал
    Происходит переполнение стека
    как его продолжить толком не пойму
    на Ассемблере вот так Masm32

    .code
    q123:
    q124:
    push eax
    jmp q124
    retn
    end q123
     
  5. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    так
    сейчас попробую
     
  6. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Clerk
    Вы хоть начали вопрос-то читать? Какая сторожевая страница? VictorV79 вышел уже за пределых SizeOfStackReserve.
    VictorV79
    Открыть образ PE-редактором и подредактировать поле PE-заголовка SizeOfStackReserve на то, какое понравится. А один мегабайт по умолчанию. Либо масму (компоновщику) указать соответствующий ключ (см. документацию на масм).
     
  7. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    А
    допёрло
    OK
     
  8. intel_x128

    intel_x128 New Member

    Публикаций:
    0
    Регистрация:
    17 май 2009
    Сообщения:
    345
    вот так расширяется стек

    push PAGE_EXECUTE_READWRITE
    push MEM_COMMIT
    push 1000000h
    push 0
    call VirtualAlloc
    lea esp, [eax+1000000h - 4]

    Процедуру выполнять строго после точки входа :)
     
  9. intel_x128

    intel_x128 New Member

    Публикаций:
    0
    Регистрация:
    17 май 2009
    Сообщения:
    345
    вместо 1000000h указываешь новый размер стека
     
  10. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    intel_x128
    А "-4" зачем?
     
  11. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    Да
    отлично получилось
    Благодарен

    .code
    q123:
    push PAGE_EXECUTE_READWRITE
    push MEM_COMMIT
    push 1000000h
    push 0
    call VirtualAlloc
    lea esp, [eax+1000000h - 4]
    q124:
    push eax
    jmp q124
    retn
    end 123
     
  12. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    Благодарен
     
  13. intel_x128

    intel_x128 New Member

    Публикаций:
    0
    Регистрация:
    17 май 2009
    Сообщения:
    345
    чтобы в Олли смотрелось красивее =)
     
  14. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    Можно наверно и так
    lea esp, [eax+1000000h - 4]
    lea esp, [eax+1000000h - 1]

    Можно и не ставить
    как я понял
    lea esp, [eax+1000000h]
     
  15. intel_x128

    intel_x128 New Member

    Публикаций:
    0
    Регистрация:
    17 май 2009
    Сообщения:
    345
    lea esp, [eax+1000000h - 1] - вот так нельзя, т.к. стек должен быть выровнен на 4 байта
     
  16. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    intel_x128
    Ну посмотрим, как потом VictorV79 после такого "расширения стека" по ret'у выход из программы делать будет...
     
  17. intel_x128

    intel_x128 New Member

    Публикаций:
    0
    Регистрация:
    17 май 2009
    Сообщения:
    345
    l_inc
    Человек начинающий. Не ищите геморрой там, где его нет по определению :)

    Код (Text):
    1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    2. ; расширяем стек
    3. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    4. push PAGE_EXECUTE_READWRITE
    5. push MEM_COMMIT
    6. push 1000000h
    7. push 0
    8. call VirtualAlloc
    9. lea esp, [eax+1000000h-4]
    10. lea eax, dword ptr [ExitProcess]
    11. push eax
     
  18. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    точно
    показывает разницу в 3 целых
    [eax+1000000h - 1]
     
  19. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    я так понял - 4 ставим от разницы обнуления стека
    что бы на выходе 1000000h = 1000000h
     
  20. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    получится получилось
    теперь буду разбирать, что там masm32\include
    выполняет
    или наверно точнее сказать инструкции invoke