Форум по Delphi программированию



Вернуться   Форум по Delphi программированию > Прочие языки программирования > Assembler
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.08.2012, 10:44
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,503
Версия Delphi: XE10
Репутация: выкл
По умолчанию Пример открытия процесса через sysenter

Открытие процесса через sysenter:
Код:
    LEA       EAX,      ClientID
    PUSH      EAX
    LEA       EAX,      ObjectArrt
    PUSH      EAX
    PUSH      PROCESS_ALL_ACCESS
    LEA       EAX,      hProc
    PUSH      EAX

    CALL      @SYSCALL

    MOV       rezult,   EAX

    JMP       @EXIT

  @SYSCALL:
    MOV       EAX,      000000BEh ; эта константа зависит от системы
    CALL      @SYSENTER
    RET       $10

  @SYSENTER:
    MOV       EDX,      ESP
    SYSENTER

  @EXIT:
    NOP
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 14.08.2012 в 11:17.
Ответить с цитированием
  #2  
Старый 03.09.2012, 18:39
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Sysenter - это, конечно, здорово. Только МС имеет полное право менять эту самую константу даже между обновлениями одной винды, если ему это понадобится. Так что практического смысла не очень много. На то АПИ и созданы.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 03.09.2012, 21:48
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,503
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Эта константа при сборке ядра автоматом генерится.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #4  
Старый 03.09.2012, 21:50
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Bargest
Только МС имеет полное право менять эту самую константу даже между обновлениями одной винды...
Тогда уж Intel и AMD.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #5  
Старый 03.09.2012, 21:56
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Нет. Эта константа - номер ядерной функции. Она в теории может меняться постоянно при пересборке винды. Документация архитектуры проца не определяет их (да и не может; sysenter просто прыгает в фиксированную точку в нулевом кольце, а как использовать это - личное дело каждого). Адрес для sysenter берется из MSR'ок.
Цитата:
Сообщение от Architecture Programmer's Manual AMD, volume 3
SYSENTER

Transfers control to a fixed entry point in an operating system. It is designed for use by system and
application software implementing a flat-segment memory model. This instruction is valid only in
legacy mode.
Three model-specific registers (MSRs) are used to specify the target address and stack pointers for the
SYSENTER instruction, as well as the CS and SS selectors of the called and returned procedures:

__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 03.09.2012 в 22:07.
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:45.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2021

ВКонтакте   Facebook   Twitter   Ссылка на Telegram