скрытие ключей реестра

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by realcoder, 19 Mar 2012.

  1. realcoder

    realcoder Member

    Joined:
    9 Dec 2010
    Messages:
    226
    Likes Received:
    11
    Reputations:
    4
    всем привет! пробовал похукать zwquerykey - результата не дало.
    похукал
    ZwEnumerateValueKey:
    (tramp_pr- трамплин на оригинальную функцию)
    PHP:
    function ZwenumKey(KeyHandle:THANDLE;index:dwordKeyValueInformationClass:DWORDKeyValueInformation:Pointer;Length:DWORD;ResultLength:pointer):ntstatus;stdcallexternal 'ntdll.dll' name 'ZwEnumerateValueKey';
    function 
    newquery(KeyHandle:THANDLE;index:dwordKeyValueInformationClass:DWORDKeyValueInformation:Pointer;Length:DWORD;ResultLength:pointer):ntstatus;stdcall;
    var 
    Kisign:pointer;
    begin
    ki
    :=nil;
     
    Result := tramp_pr(keyhandle,index,keyvalueinformationclass,KeyValueInformation,length,resultlength);
     if (
    keyValueInformationClass=0)or(keyValueInformationClass=2then
     begin
     getmem
    (ki,integer(resultlength^)-12);
      
    zeromemory(ki,integer(resultlength^)-12);
     
    copymemory(ki,pointer(dword(keyvalueinformation)+12),integer(resultlength^)-12);

     
    end;
     if 
    keyValueInformationClass=1 then
     begin
      getmem
    (ki,integer(resultlength^)-20);
       
    zeromemory(ki,integer(resultlength^)-20);
     
    copymemory(ki,pointer(dword(keyvalueinformation)+20),integer(resultlength^)-20);
     
    end;
     
    sign:=nil;
     
    getmem(sign,(lstrlenw('Cmiboot')*2));     //скопируем только то что предположительно может ровняться cmiboot
     
    Zeromemory(sign,(lstrlenw('Cmiboot')*2));
     
    copymemory(sign,ki,lstrlenw('Cmiboot')*2);
     if(
    lstrcmpiw(sign,'Cmiboot')=0then result:=$8000001A;//ntstatus_no_more_items


    end;
    при таком раскладе вылетают все приложения, но ключ скрывается, и когда кликаю на другую ветку в регедите то он тож вылетает.
    если остаивть только
    PHP:
     Result := tramp_pr(keyhandle,index,keyvalueinformationclass,KeyValueInformation,length,resultlength);
    все работает правильно(только ясен пень не скрывает). вчем может быть проблема?
     
    #1 realcoder, 19 Mar 2012
    Last edited: 19 Mar 2012
  2. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    937
    Likes Received:
    162
    Reputations:
    27
    Оформи код получше и выложи на http://pastebin.com/.
     
  3. realcoder

    realcoder Member

    Joined:
    9 Dec 2010
    Messages:
    226
    Likes Received:
    11
    Reputations:
    4
    http://pastebin.com/7jz3dab7
     
  4. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,021
    Likes Received:
    1,200
    Reputations:
    327
    Ntroot как классика к вашим услугам. тока фигня все это, х86 скоро канет в лету консайдер юзинг х64 платформ,- там свой подкидной дурак с блядями и патчгвардом - гораздо интереснее.
     
  5. realcoder

    realcoder Member

    Joined:
    9 Dec 2010
    Messages:
    226
    Likes Received:
    11
    Reputations:
    4
    опытным путем выяснил что валиться на coptmemory. уже и getmem заменил на virtualalloc и удрал все чтоб заставить память нормально копироваться.
    как заставить память копироваться?
    уже изъебся в шишки