Формирование адреса при использовании стека

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Формирование адреса при использовании стека

Сообщение hinst » 26.03.2010 11:45:12

Подскажите пожалуйста, каким образом формируется физический адрес при использовании стека. И как можно на это формирование повлиять, если можно.
Речь идёт о выполнении приложения не под управлением операционной системы, а в "системном режиме", или как бы его обозвать...
Есть сегмент стека от 0 до 4Гб устанавливаем mov esp, 0x200000-4 и запускаем прогрмму - работет; изменяем базу сегмента стека от 0x100 до 4Гб - не работает т.е. адрес в сегменте не равен физическому адресу. Как-то так. Хотелось бы как-нибудь это починить.
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Формирование адреса при использовании стека

Сообщение coyot.rush » 26.03.2010 14:03:11

Ring0 :?: Именно физический? Управление памятью можно в windows \.DevicePhisicalMemory ; Linux /dev/mem. В обоих случаях нужны максимальные права в системе

Добавлено спустя 10 минут 45 секунд:
Есть сегмент стека от 0 до 4Гб устанавливаем mov esp, 0x200000-4 и запускаем прогрмму - работет; изменяем базу сегмента стека от 0x100 до 4Гб - не работает т.е. адрес в сегменте не равен физическому адресу. Как-то так. Хотелось бы как-нибудь это починить.

sub esp,some_memory резервироваие памяти в стеке
Аватара пользователя
coyot.rush
постоялец
 
Сообщения: 309
Зарегистрирован: 14.08.2009 08:59:48

Re: Формирование адреса при использовании стека

Сообщение hinst » 26.03.2010 14:16:28

я ж говорю, это не windows, и не linux. эта фигня исполнятеся в Virtual Box, на эмуляторе 386-го процессора. так что с правами проблем нет
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Формирование адреса при использовании стека

Сообщение coyot.rush » 26.03.2010 14:26:36

Re: Формирование адреса при использовании стека

Новое сообщение hinst 26.03.2010 15:16:28
я ж говорю, это не windows, и не linux. эта фигня исполнятеся в Virtual Box, на эмуляторе 386-го процессора. так что с правами проблем нет

и как называеться это чудо 8) Kolibri OS :?:
Как подменить стек? http://www.rsdn.ru/article/baseserv/stack.xml

Команда PUSH

Эта команда уменьшает регистр esp на размер своего операнда и записывает значение операнда по адресу, находящемуся в esp.
Команда POP

Эта команда читает значение операнда по текущему адресу в esp и увеличивает регистр esp на размер своего операнда.
Команда RETN

Действует также как и pop, однако операндом для нее неявно служит регистр eip – extended instruction pointer (указатель команд). С помощью этой команды вы можете изменять содержимое указателя команд, хотя явных инструкций для его изменения нет.


Добавлено спустя 4 минуты 14 секунд:
Идя состоит в многократном использование команд PUSH/ POP , тем самым влияя на стек
Вам прямая дорога на http://www.wasm.ru
Аватара пользователя
coyot.rush
постоялец
 
Сообщения: 309
Зарегистрирован: 14.08.2009 08:59:48


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 7

Рейтинг@Mail.ru