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

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

  1. VictorV79

    VictorV79 New Member

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

    q123:
    PUSH 040h
    PUSH 01000h
    PUSH 01000000h
    push 0
    call VirtualAlloc
    lea esp, [eax+eax]
    q124:
    push eax
    jmp q124
    retn
    end q123


    стек увеличился
    а EBP этого не кажет, как был 0012FF94 так и остался, даже не дёрнулся при заполнении стека
    ESP 00790000
    EBP 0012FF94

    это вообще нормально
     
  2. VictorV79

    VictorV79 New Member

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

    ESP 00790000
    EBP 0012FF94

    Просто хочу спросить
    разве EBP может быть меньше ESP

    стек начинает заполняться с адреса ESP 00F20000 и заканчивается адресом ESP 00790000
    А EBP на это не реагирует
    Почему
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2B, p.297
     
  4. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    Да
    Ещё немного повозился
    EBP всё таки указывает начало стека самой проги и откуда может допихать в стек ограниченный кусок данных
    ESP указывает последний запыханный адрес
    А вот где посмотреть полный размер стека с адреса по адрес при его расширении
    например произвольном расширении когда точный размер не указывается и прога сама берёт нужный размер стека
    Как определить сколько прога взяла адресов в стеке от и до
    EBP не показывает адрес если расширение стека происходит по другим адресам


    попробую ещё разобрать вышенаписанное от Clerk
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Ebp это регистр общего назначения, такойже как и все остальный и не зависит от стека/Esp. Только инструкции Enter/Leave его используют, в остальном изменяет програмно для формирования стековых фреймов. Когда тред начнёт исполняться регистр Ebp будет содержать ноль. Далее уже пользовательский код, либо системный BaseThreadStart() etc., загрузит в него указатель на первый фрейм. Как определить размеры стека я уже говорил, текущий регион - сервис NtQueryVirtualMemory.
     
  6. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    Как написать строку
    без использования dword регистров
    MASM32 меня что то не понимает

    add dword ptr ds:[4030A0h], 10h ; Прибавляет 10h по адресу 4030A0h
    inc dword ptr ds:[403080h] ; Прибавляет 1 по адресу 403080h
    inc dword ptr [403080h] ; не понимает
    dec dword ptr ds:[403080h], dword ptr [4030A0h] ; не понимает
    dec dword ptr ds:[403080h], 1030A0h ; не понимает
    mov dword ptr ds:[4030A0h], ds:[403080h] ; не понимает
    mov dword ptr [4030A0h], [403080h] ; не понимает
    mov dword ptr [4030A0h], dword ptr [403080h] ; не понимает
    mov dword ptr ds:[4030A0h], dword ptr [403080h] ; помещает по адресу, число 403080h

    Add как сложить два числа из адреса в памяти не присваивая числу метку или регистр
    Mov или переместить из одного адреса в другой без присваивания числу метки или регистра и без стека

    MASM32 меня что то не понимает
     
  7. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    Вернее если стек
    использовать, то вот так понимает

    push dword ptr ds:[4030A0h]
    pop dword ptr ds:[403080h]

    а по другому можно и без регистров
    что бы поменьше строк было
     
  8. VictorV79

    VictorV79 New Member

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

    просто числу по адресу в памяти заранее присваивать значение не очень удобно
    что бы им потом манипулировать
     
  9. VictorV79

    VictorV79 New Member

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

    mov dword ptr сs:[4030A0h], сs:[403080h]
    add dword ptr ds:[4030A0h], ds:[403080h]
     
  10. VictorV79

    VictorV79 New Member

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

    add dword ptr ds:[4030A0h], dword ptr ds:[403080h]
    mov dword ptr ds:[4030A0h], dword ptr ds:[403080h]
     
  11. VictorV79

    VictorV79 New Member

    Публикаций:
    0
    Регистрация:
    26 мар 2009
    Сообщения:
    130
    почему не даёт манипулировать значением в памяти на прямую
    xchg dword ptr ds:[403090h], dword ptr ds:[4030A0h]
    к примеру