Подмена ldtr,gdtr,idtr

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

  1. pavelvladimirovich

    pavelvladimirovich New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2006
    Сообщения:
    10
    Я новичок в ассемблере, но мне нужно реализовать примерно вот такой код

    mov 0x8003F000, gdtr;
    mov 0x8003F400, idtr;
    mov 0x0000, ldtr;

    Ну иными словами - подменить значения в этих регистрах. Вы будете смеяться, но лучше всего это сделать на делфи =). Да и си тоже сгодится..
     
  2. Pyromaniac

    Pyromaniac New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    9
    Глупо надеяться, что виндовоз позволит выполнить такие инструкции (по крайней мере из 3го кольца).
     
  3. pavelvladimirovich

    pavelvladimirovich New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2006
    Сообщения:
    10
    Я не то что глупый, я просто не специалист в ассемблере. Надо привелегии дебаггера получить? Или драйвер защищенного режима написать ? Или что. Ответь плиз если знаешь и если не сложно.

    А кстати, это мне нужно для вмваре, то есть возможность пропатчить ее файл есть.
     
  4. axe_roma

    axe_roma New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2004
    Сообщения:
    93
    Адрес:
    Russia
    Тебе надо перейти в ring 0 т.е написать драйвер и в нем реализовать желаемое!
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    таких команд нету )
    есть команды lgdt, lidt & lldt для загрузки соотв. 48-битных регистров.
    есесно из третьего кольца защиты никто тебе сделать этого не позволит. эти инструкции могут быть выполнениы только на 0 кольце. отсюда вывод - либо гейт, либо драйвер. первый способ катит до Windows 2003 SP1 кажется но не нужно таскать с собой бинарник драйвера, второй - универсален и документирован, но требует еще одного бинарника (SYS).
     
  6. pavelvladimirovich

    pavelvladimirovich New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2006
    Сообщения:
    10
    Погоди погоди Great, эти команды для загрузки ИЗ регистров в переменную ? А мне ведь наоборот надо сделать..

    Да и если не сложно кидай сорец если есть иначе я буду год учить сначала асм =)
     
  7. axe_roma

    axe_roma New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2004
    Сообщения:
    93
    Адрес:
    Russia
    если на оборот то команды: sgdt,sidt. Чего исходник по использованию этих команд или по драйверу?
     
  8. Pyromaniac

    Pyromaniac New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    9
    Чтоб такое сделать, тебе по-любому придется асм учить, а уж год или нет, это зависит исключительно от твоих способностей...
     
  9. pavelvladimirovich

    pavelvladimirovich New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2006
    Сообщения:
    10
    axe_roma можно оба если тебя не затруднит..
    Pyromaniac Я как то и не против, но понимаешь ради одной задачи не хочется учить целый язык
     
  10. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    LGDT = Load GDTR, GDTR = Global Descriptor Table Register.
    Эта команда загружает В РЕГИСТР.
    Для получения значения ИЗ РЕГИСТРА есть команда SGDT.
     
  11. pavelvladimirovich

    pavelvladimirovich New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2006
    Сообщения:
    10
    Всё ясно. axe_roma если сорцы есть, скинь плиз.
     
  12. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    pavelvladimirovich
    тут (http://www.wasm.ru/forum/viewtopic.php?id=18880) есть сорсы моего загрузчика, который устанавливает GDTR и IDTR. Тебе это надо?
     
  13. axe_roma

    axe_roma New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2004
    Сообщения:
    93
    Адрес:
    Russia