· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.RESEARCH —› SysEnter,SysCall,SysExit

Посл.отвђт Сообщенiе


Дата: Дек 20, 2003 09:48:40 · Поправил: Sem

Почитал доки о коммандах (про SysCall не нашёл), посмотрел в дебагере (на примере NtQueryVirtualMemory), что-то типа:

mov eax,0b2h
mov edx,xxxx
call edx

Далее вроде

mov edx,esp
sysenter

, попробовал использовать- запушил параметры,

sub esp,8
mov edx,esp
sysenter
add esp,6*4

не работает (со стеком косяк что ли). Не подскажите?


Дата: Дек 20, 2003 12:11:58

Если запушил, зачем sub esp,8? И почему 8, если потом add esp,6*4? Перед sysenter в eax - индекс системного сервиса, edx - указывает на вершину стека, где уже должны находится аргументы для сервиса. Посмотри внимательнее как это система делает.


Дата: Дек 20, 2003 12:21:42

Sorry, у меня должно было быть mov edx,esp после sub esp,8.

А 8 потому, что до sysenter'а идут два call'a ну и по поводу add esp,6*4: NtQuery... имеет 6 аргументов и очищает стек ret 6*4


Дата: Дек 20, 2003 12:27:56

Блин, запутался совсем. А можно так?

push ...

lea edx,[esp-8]
sysenter


Дата: Дек 20, 2003 12:42:42

Важно, чтоб в edx был указатель на аргументы. Как ты его туда поместишь не имеет значения. Возьми тот системный сервис, который ты хочешь вызвать и посмотри как это ntdll делает.


Дата: Дек 20, 2003 13:14:18

Большое спасибо. Просто не разу не использовал это, а сейчас понадобилось (всё то же "Об ArtMoney, Cheet O'Matic и ...") для скорости работы.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.042