Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.26;
Скачать: CL | DM;

Вниз

Вопрос по Native API   Найти похожие ветки 

 
zaN0za ©   (2006-01-07 02:13) [0]

Доброго времени суток, уважаемые мастера.

У меня следующий вопрос:

пытаюсь перечислить список процессов с помощью Native API.

для выделения памяти использую функцию

function ZwAllocateVirtualMemory(ProcessHandle: Cardinal; BaseAddress: Pointer;
               ZeroBits: DWORD; AllocationSize: DWORD;
               AllocationType: DWORD; Protect: DWORD): NTStatus;
               stdcall; external "ntdll.dll";


в программе выглядит так:


...
dwSize  : DWORD;
lpBuff  : Pointer;
NT_Stat : NTStatus;
...

ZwAllocateVirtualMemory(0, lpBuff, 0, dwSize, MEM_COMMIT or MEM_RESERVE, PAGE_READWRITE);
NT_Stat := ZwQuerySystemInformation(SYSTEM_PROCESSES_AND_THREADS_INFORMATION,
                                   lpBuff,
                                   dwSize,
                                   nil);
...


в итоге lpBuff остается пустой. если выделять память для lpBuff с помощью VirtualAlloc,
то все работает отлично, но нужны только Native API функции.

что я делаю не правильно?

Благодарю за внимание.


 
Rouse_ ©   (2006-01-07 17:08) [1]

Вот пример через Ntxxx
http://rouse.front.ru/taskmon.zip


 
CHES ©   (2006-01-07 17:19) [2]

Хорошая статья. С примерами.
Можно рекомендовать всем желающим  "скрыть процесс под NT", чтоб дурью не маялись.

http://wasm.ru/article.php?article=hiddndt


 
zaN0za ©   (2006-01-07 19:16) [3]

Спасибо за внимание, но хотелось бы разобраться конкретно с функцией ZwAllocateVirtualMemory.
Как правильно ее использовать?


 
NaziGhost   (2006-01-08 13:05) [4]

имхо указатель на буффер надо использовать


 
zaN0za ©   (2006-01-08 19:58) [5]


> NaziGhost   (08.01.06 13:05) [4]

делаю так:

lpBuff  : Pointer;
...
ZwAllocateVirtualMemory(0, lpBuff, 0, dwSize, MEM_COMMIT or MEM_RESERVE, PAGE_READWRITE);


не работает :(

может я функцию объявляю не правильно?


 
Piter ©   (2006-01-09 01:08) [6]

А что, анализировать значения, возвращаемые функциями уже не модно?

Return Value
ZwAllocateVirtualMemory returns either STATUS_SUCCESS or an error status code. Possible error status codes include the following:

STATUS_ACCESS_DENIED

STATUS_ALREADY_COMMITTED

STATUS_COMMITMENT_LIMIT

STATUS_CONFLICTING_ADDRESSES

STATUS_INSUFFICIENT_RESOURCES

STATUS_INVALID_HANDLE

STATUS_INVALID_PAGE_PROTECTION

STATUS_NO_MEMORY

STATUS_OBJECT_TYPE_MISMATCH

STATUS_PROCESS_IS_TERMINATING


 
Piter ©   (2006-01-09 01:11) [7]

И собственно на каком основании ты первым параметром указываешь ноль? Я что-то не вижу нигде описания возможности такого использования:

ProcessHandle
Handle for the process for which the mapping should be done. Use the NtCurrentProcess macro to specify the current process.


 
Игорь Шевченко ©   (2006-01-10 13:05) [8]


> ZwAllocateVirtualMemory(0, lpBuff, 0, dwSize, MEM_COMMIT
> or MEM_RESERVE, PAGE_READWRITE);


У тебя неверно прототип объявлен

function Nt(Zw)AllocateVirtualMemory (hProcess: THANDLE;
 var PreferredBaseAddress: PVOID; nLowerZeroBits: DWORD;
 var SizeRequestedAllocated: DWORD;
 AllocationType, ProtectionAttributes: DWORD): NTSTATUS; stdcall;

А вообще, пользуйся Heap-функциями из ntdll и не мучайся



Страницы: 1 вся ветка

Текущий архив: 2006.03.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.046 c
3-1138809212
-Вася-
2006-02-01 18:53
2006.03.26
Установка SQL Server 2000


2-1141906952
Barsky
2006-03-09 15:22
2006.03.26
Форма поверх всех окон.


15-1140039304
Piter
2006-02-16 00:35
2006.03.26
Заправка картриджей!


15-1141571862
LordOfRock
2006-03-05 18:17
2006.03.26
Убедите меня....


2-1141732556
Grey.pmr
2006-03-07 14:55
2006.03.26
Как включить в текст программы на Делфи прогу на паскале?