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

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by idef, 8 Sep 2007.

  1. idef

    idef New Member

    Joined:
    7 Sep 2007
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Нужно подменить значение в реестре.Где-то читал, что значения перечисляются функцией NtEnumerateValueKey, но при подмене параметра Name никаких изменений не произошло(выводится старое значение).
    Code:
    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,KeyValueInformationClass,KeyValueInformation,KeyValueInformationLength,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;
    }
    
    Как правильно подменить значение?
     
  2. Ni0x

    Ni0x Elder - Старейшина

    Joined:
    27 Aug 2006
    Messages:
    338
    Likes Received:
    157
    Reputations:
    37
    тебе нужен NativeAPI? Если да, то смотри исходники руткитов, там обычно перехватываются такие функции.
     
  3. idef

    idef New Member

    Joined:
    7 Sep 2007
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    В руткитах есть подобная фенька, но там немного другое. Там с помощью данной функции перечисляются значения и если найдено значение которое нужно спрятать, прячется сам ключ, а мне нужно подменить значение.