Есть не документированная ф-ция ZwQuerySystemInformation Как получить адрес системного процесса я знаю... Code (Text): push offset cb push cb push p push SystemModuleInformation call ZwQuerySystemInformation Но как получить адрес обычного пользовательского процесса?
Непонятно, что имеется ввиду. Entry point ? Процесс не имеет адреса. Можно получить адрес конкретного модуля (GetModuleHandle(ModuleName)).
Адрес процесса это указатель на EPROCESS. Открываем процесс по PID, делоем слепок и находим поле описывающее хэндл - SystemHandleInformation.Object. Но это в юзермоде, в режиме ядра PsLookupProcessByProcessId().
процессы этим критерием не отличаются и нет разницы между пользовательскими и системными. что ты под этим понимаешь? это адрес объекта "процесс". всетаки интересует что именно надо ТС. этим ты не получишь точку входа главного треда, если чувак это имеет в виду. ТС, что ты понимаешь под 1) адресом процесса? 2) системным и пользовательским процессами
Житие мое, млин... Устанавливать перехват ф-ций ядерных процессов я умею, при помощи ZwQuerySystemInformation я беру список последних ну и т.д. Мне же нужно перехватить управление user процесса, изменить регистры и переменные и отдать обратно. Через ZwQuerySystemInformationроде кажется вот так... Code (Text): push offset cb push cb push p push SystemProcessesAndThreadsInformation call ZwQuerySystemInformation mov esi,p assume esi:ptr SYSTEM_INFORMATION_CLASS lea eax,[esi].ImageName assume esi:nothing Но в буфере абра кадабра... Есле в место SystemProcessesAndThreadsInformation написать SystemModuleInformation, то получу список ядерных модулей... Что делать?
Что не понятно ядерный(kernel) - нулевой уровень привелегий. Пользовательский(user) - уровень привелегий 3... ...
skyproc Не понятно что ты имеешь в виду под "уровень привилегий процесса" ? У процесса нет уровня привилегий.
Для тех кто в танке... Аппаратно CPU поддерживает 0,1,2,3 уровни привелегий. В Windows XP реализовано только 0,3 т.е. kernel,user соответственно... Разница к примеру в том что user процесс не может работать с портами ввода вывода, если конечно ему это не разрешить опять же через kernel mode. Так вот оказывается увожаемый Great у каждого процесса есть 0 или 3 уровень привилегий. Что такое процесс я отвечу если вы ответите мне на вопрос что такое растояние и длина... Может всётаки есть коментарии по теме???
Уважаемый skyproc, нет ядерных и пользовательских процессов! Это код может выполнятся с разным уровнем привелегий. Процесс содержит потоки (threads). А вот как-раз поток переключается в kernel mode во время вызова API'шек, а потом возвращаяется обратно. Теперь прочитай ниже написанное: All native API calls from User Mode have a body that simply loads an index into EAX, executes SystemCallStub, and returns. SystemCallStub saves a pointer to the top of the User Mode stack into EDX and executes a SYSENTER instruction SYSENTER disables interrupts, switches the thread into Kernel Mode and executes the instruction located in the SYSENTER_EIP_MSR (which on XP SP1 is KiFastCallEntry) KiFastCallEntry builds a trap frame so it knows where to go when returning back to User Mode, enables interrupts, and jumps into KiSystemService KiSystemService, amongst doing other things, copies the parameters from the User stack (pointed to by EDX) and takes the value previously stored in EAX and executes the function located at KiServiceTable[EAX] (полностью прочитать можешь здесь http://www.osronline.com/article.cfm?article=257 , однако их сервак на момент поста лежит, поэтому вот эта страница в кэше гугла: http://216.239.59.132/search?q=cache%3Ahttp%3A%2F%2Fosronline.com%2Farticle.cfm%3Farticle%3D257)
Учи англиский. SYSENTER disables interrupts, switches the thread into Kernel Mode and executes the instruction located in the SYSENTER_EIP_MSR (which on XP SP1 is KiFastCallEntry) = SYSENTER запрещает прерывания, переключает поток в режим ядра и выполняет инструкцию, находящуюся но адресу SYSENTER_EIP_MSR (по которому в XP SP1 находится KiFastCallEntry). Может расскажешь, что ты понимаешь под процессом? Т.к. похоже, что это предстваление эм... неверно и это и является основным камнем преткновения.