|
|
| Посл.отвђт | Сообщен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 |