Форум: "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