Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.047 c
1-1140344181
s&r
2006-02-19 13:16
2006.03.26
[?]Отправка символа RichEdit


1-1140513734
reboot
2006-02-21 12:22
2006.03.26
vcl inet40


2-1142279229
LordOfRock
2006-03-13 22:47
2006.03.26
Дерево и много текста


2-1142077500
ЧиЧиЧи
2006-03-11 14:45
2006.03.26
про windows


5-1127855926
Proxytel
2005-09-28 01:18
2006.03.26
Как отловить клик над конкретной ячейкой StringGrid ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский