Код (Text): NTSTATUS newZwOpenKey(OUT PHANDLE KeyHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes) { DbgPrint("KeyHandle=%X, DesiredAccess=%X, ObjectAttributes=%08X",KeyHandle,DesiredAccess,ObjectAttributes); return origZwOpenKey(....); }
Ну, судя по префиксу "Р", последний из парамов - это указатель. Указатель на структуру OBJECT_ATTRIBUTES. DesiredAccess = 20019h = 100000000000011001b = KEY_QUERY_VALUE (1h) KEY_ENUMERATE_SUB_KEYS (8h) KEY_NOTIFY (10h) STANDARD_RIGHTS_READ a.k.a. STANDARD_RIGHTS_WRITE a.k.a. STANDARD_RIGHTS_EXECUTE a.k.a. READ_CONTROL (20000h) Ну а первый - сопстно хендл. А что с ними всеми делать - уже твоя епархия =) Зачем-то ты их получал, правда?
MSoft Ну, допустим, что такое стек и параметры я знаю. Дело в том, что я не программер (только остатки знаний полученных по специальности ВКСС в 2000г.). У меня есть задание (от коллеги по работе - заочника) написать монитор доступа к реестру на С. Я вроде все сделал - драйвером ловлю ProcessID тех кто стучится к реестру и отдаю пачку PID монитор... Оказалось надо еще знать что процесс хотел сделать, т.е. достать из параметров название ветки реестра и т.п. Коммерческих целей не преследую, просто мозг расшевелить хочется.
Ramzey OBJECT_ATTRIBUTES.RootDirectory - родительский раздел, напр., HKLM OBJECT_ATTRIBUTES.ObjectName - дочерний подраздел или ключ. Оттуда и доставай. Была вроде тема недавно. hawk разбиралсо давеча http://wasm.ru/forum/viewtopic.php?pid=289771#p289771
Aspire Спасибо, помогло. Еще ламерский вопросик в догонку, как в С указатели перемещать? вот кусок кода который из драйвера инфу получает - разную! Код (Text): PVOID P; P=malloc(MemAlloc*sizeof(HANDLE)); if (P!=NULL) do { ReadFile(hDevice,P,MemAlloc*sizeof(HANDLE),&Reads,NULL); ... _asm { mov eax, P add eax, 4 mov wstr, eax } astr=wstr; Как мне изменить P без ассемблерных вставок?