PDA

Просмотр полной версии : Подмена значения в реестре.


idef
08.09.2007, 23:43
Нужно подменить значение в реестре.Где-то читал, что значения перечисляются функцией NtEnumerateValueKey, но при подмене параметра Name никаких изменений не произошло(выводится старое значение).

static NTSTATUS WINAPI xNtEnumerateValueKey(
HANDLE KeyHandle,
ULONG Index,
KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
PVOID KeyValueInformation,
ULONG KeyValueInformationLength,
PULONG ResultLength
)
{
WCHAR regstr[] = L"NameValue";
WCHAR teststr[] = L"Val02";
NTSTATUS ns;KEY_VALUE_FULL_INFORMATION *kvfi = NULL;
kvfi = (KEY_VALUE_FULL_INFORMATION*)KeyValueInformation;
ns=NtEnumerateValueKey(KeyHandle,Index,KeyValueInf ormationClass,KeyValueInformation,KeyValueInformat ionLength,ResultLength);
if(ns==STATUS_SUCCESS & kvfi->Type==REG_SZ)
{
if(RtlCompareMemory((PVOID)&kvfi->Name[0],(PVOID)&regstr[0],9)==9)
{
RtlCopyMemory((PVOID)&kvfi->Name[4],(PVOID)&teststr[0],4);
}
}
return ns;
}

Как правильно подменить значение?

Ni0x
08.09.2007, 23:51
тебе нужен NativeAPI? Если да, то смотри исходники руткитов, там обычно перехватываются такие функции.

idef
09.09.2007, 00:01
В руткитах есть подобная фенька, но там немного другое. Там с помощью данной функции перечисляются значения и если найдено значение которое нужно спрятать, прячется сам ключ, а мне нужно подменить значение.