Глобальные переменные.

Тема в разделе "WASM.NT.KERNEL", создана пользователем Clerk, 24 июл 2010.

  1. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    sl0n
    Тогда придётся юзать функу p=f(v) каждый раз при обращении к переменной.
     
  2. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    Неиспользуемые элементы IDT?
     
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    > Неиспользуемые элементы IDT?
    дык так же как и с msr, у каждого проца - своя табличка.
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    хотя можно использовать на первом проце, но тогда нужно будет искать табличку со списокм idt.
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    PSR1257
    IDT, GDT etc. локальны для процессора и эта память отслеживается защитой. Не юзабельно. Нужна глобальная область памяти общая для всех процессоров.
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    простой вариант - в малоиспользуемом поле EPROCESS системного процесса.
    насколько я помню память под объекты - NonPagable, так что с irql проблем не будет.
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    n0name
    Тоже была такая идея. Это гораздо хуже, чем использование PCR, где переменные адресуются просто регистром Fs.
     
  8. slesh

    slesh New Member

    Публикаций:
    0
    Регистрация:
    6 фев 2009
    Сообщения:
    214
    А если хранить в каких нибудь устройствах? Допустим куданить временно сохранить cmos память и юзать её) или память какихнить других устройств. Допустим видеопамять.
     
  9. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    slesh
    Обращение к устройствам не морфится, если они не отображены в память. Тоесть инструкцию In нельзя заменить на аналоги. Достаточно нескольких таких инструкций для создания сигнатуры. Работа должна выполняться только с памятью.
     
  10. slesh

    slesh New Member

    Публикаций:
    0
    Регистрация:
    6 фев 2009
    Сообщения:
    214
    Ну а если генерить в памяти нужные инстукции и поочередно вызывать их? Допустим хотябы с томже стеке генерить.
    типа
    push xxxxxxxx
    push xxxxxxxx
    *********
    add [esp], yyyyyyyy
    xor [esp+4], yyyyyyyy
    и так далее а потом просто передавать управления туда. когда нужны определенные команды, а потом опять запирать всё после использования. Конечно могут быть проблемы с ошибкой выполнения данных. но под ядром этоже можно решить
     
  11. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    slesh
    Тоесть для извлечения ссылки вызывается код из буфера, где он собран. Но необходима ссылка на буфер.
     
  12. Charlief

    Charlief New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2010
    Сообщения:
    129
    Clerk
    По условию вашей задачи вы не знаете где хранить ссылку на переменные, но при этом подразумевается что вы уже как бы знаете где хранить эти самые переменные, то есть их адресс, странно... помоему ответ напрашивается сам собой - в коде, и больше нигде.
     
  13. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Charlief
    Определитесь что есть адрес. В моём примере смещение в сегменте постоянно, изменяется база сегмента, причём адрес его не имеет значения(прим. база, не используется непосредственно).
     
  14. Charlief

    Charlief New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2010
    Сообщения:
    129
    Значит ссылка должна находиться по постоянному смещению в заранее известном сегменте, а данные в другом сегменте или в том же но по заранее неизвестному смещению ?
    То есть ваш код сохраняет в ссылке смещение данных (на этом этапе код знает смещение ссылки и смещение данных), потом мутирует и на этом этапе он теряет смещение данных но не теряет смещение ссылки ? А нельзя ли так сделать наоборот чтобы код потерял смещение ссылки но не данных, и тогда надобность в ссылке отпадёт.
     
  15. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Charlief
    Нужна глобальная переменная, адресация которой не изменяется при морфинге и расположена за пределами кода.
     
  16. Charlief

    Charlief New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2010
    Сообщения:
    129
    Теперь понятно, так бы сразу и сказали что не знаете где хранить сами переменные, а не ссылки на них.

    Структура OBJECT_HEADER - поля обединения PQUOTA_BLOCK (POBJECT_CREATE_INFO) и PSECURITY_DESCRIPTOR у некоторых объектов могут быть равны нулю, то есть не использоваться если соответствующие флаги в этой структуре не установлены. Вот берите и занимайте свободное место. Ага, вот и n0name сказал: "память под объекты - NonPagable, так что с irql проблем не будет". Плюс байтовые поля смещений неиспользуемых структур заголовка обьекта.

    И что значит "Это гораздо хуже, чем использование PCR, где переменные адресуются просто регистром Fs." ? - Что бы только с помощью Fs - это же нужно целый отдельный сегмент, а вы сами написали: "IDT, GDT etc. локальны для процессора и эта память отслеживается защитой. Не юзабельно. Нужна глобальная область памяти общая для всех процессоров."