Вопрос по MASM

Тема в разделе "WASM.ASSEMBLER", создана пользователем MrMiXeR, 27 июн 2008.

  1. MrMiXeR

    MrMiXeR New Member

    Публикаций:
    0
    Регистрация:
    27 июн 2008
    Сообщения:
    97
    Возможно ли указать в исходнике(!!!) на MASM атрибуты секции .CODE (Нужны права на запись) и если да то как
     
  2. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    MrMiXeR Юзай VirtualProtect
     
  3. MrMiXeR

    MrMiXeR New Member

    Публикаций:
    0
    Регистрация:
    27 июн 2008
    Сообщения:
    97
    Йа новерное норкоман, я пытаюсь объединить секции .CODE и .DATA в одну, причём не используя импорта ))))
     
  4. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Что-то я не врубаюсь в чем проблема... Ищи фукнцию в ручную, запускай на выполнение и дальше юзай свои данные на запись
     
  5. MrMiXeR

    MrMiXeR New Member

    Публикаций:
    0
    Регистрация:
    27 июн 2008
    Сообщения:
    97
    ладно... попробую
     
  6. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    MrMiXeR Только, я не понял зачем тебе это нужно, если при компиляции можно указать атрибуты секции, либо поправить в хекс-редаторе.
    Если эти варианты не катят (по какой-то причине), то на масме придется делать как написано выше. (немножко лишнего кода).
    На фасме можно в исходнике написать атрибуты.
     
  7. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    Когда будешь собирать EXE укажи следующий ключ:
    /section:.text,ERW
    Теперь можно и читать и писать в код.
     
  8. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    S_Alex Может, вопрос сначала прочтешь? Не в обиду, конечно, но для кого человек три восклицательных знака ставил?
     
  9. MrMiXeR

    MrMiXeR New Member

    Публикаций:
    0
    Регистрация:
    27 июн 2008
    Сообщения:
    97
    Я возможно что-то нетак делаю, укажите правильный путь

    пишу так:

    push 60000020 (READONLY SECTION) (Старые права), пробовал и PAGE_READONLY
    push E0000020 (Добавил Врайтабельность) (Новые права), пробовал и PAGE_EXECUTE_READWRITE
    push 00401000h (VOffset секции кода)
    push 200h (RawSize секции кода)
    Call VirtualProtect

    И всё время FALSE сволочь возвращает

    В чём неправ?
     
  10. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    MrMiXeR
    Четвертым параметром этой функции ты должен передать указатель на переменную (dword), в которую функция вернет старое значение протекции.

    Соответсвенно, эта переменная у тебя должна валяться в стеке, т.к. запись в секцию кода у тебя еще не разрешена.

    Первый параметр - указатель, а второй - размер. А у тебя наоборот.

    Короче, у тебя секция кода начинается с метки (напр., start:)
    Код (Text):
    1.  invoke VirtualProtect, offset start, 200h, PAGE_EXECUTE_READWRITE, addr Perem
     
  11. MrMiXeR

    MrMiXeR New Member

    Публикаций:
    0
    Регистрация:
    27 июн 2008
    Сообщения:
    97
    Блин огромнейшее спасибо! Всё получилось как надо *жмёт руку Aspire* Вот она моя невнимательность ))) Ведб про эту функцию в справочнике раз 5 прочитал )))
     
  12. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    MrMiXeR
    http://msdn.microsoft.com/en-us/library/d06y3478(VS.80).aspx