Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

ActiveX Startup Metoda - u cemu je problem ?

[es] :: Zaštita :: ActiveX Startup Metoda - u cemu je problem ?

Strane: 1 2

[ Pregleda: 3969 | Odgovora: 26 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: ActiveX Startup Metoda - u cemu je problem ?11.10.2004. u 17:12 - pre 250 meseci
Ovako... Ja sam onaj C kod preveo po Sundance-ovim uputstvima... Ali ocito je da sam negde pogresio... NtCreateKey funkcija ne vraca ERROR_SUCCESS (sto bi valjda trebala da vrati ako je uspesno kreirala/otvorila key)... Evo sourceta :
Code:

uses
  Windows;

type
  _UNICODE_STRING = record
                      Length        : Byte;
                      MaximumLength : Byte;
                      Buffer        : WideString;
                    end;

  _OBJECT_ATTRIBUTES = record
                         Length                   : LongWord;
                         RootDirectory            : THandle;
                         ObjectName               : _UNICODE_STRING;
                         Attributes               : LongWord;
                         SecurityDescriptor       : pointer;
                         SecurityQualityOfService : pointer;
                       end;

  TNTCK = function(KeyHandle        : THandle;
                   DesiredAccess    : LongWord;
                   ObjectAttributes : _OBJECT_ATTRIBUTES;
                   TitleIndex       : LongWord;
                   rClass           : pointer;
                   CreateOptions    : LongWord;
                   Disposition      : PLongWord) : Cardinal;
  TNTSVK = function(KeyHandle  : THandle;
                    ValueName  : _UNICODE_STRING;
                    TitleIndex : LongWord;
                    rType      : Cardinal;
                    Data       : pointer;
                    DataSize   : LongWord) : Cardinal;
  TNTDK = function(KeyHandle : THandle) : Cardinal;


const
  OBJ_CASE_INSENSITIVE = 0x40;

var
  KeyNameBuffer         : WideString = '\Registry\Machine\SOFTWARE';
  NewKeyNameBuffer      : WideString = 'ProbaKey';
  HiddenKeyNameBuffer   : WideString = 'ProbaPodKey' + #0;
  HiddenValueNameBuffer : WideString = 'HiddenVal';

  SoftwareKeyHandle : Cardinal;
  SysKeyHandle      : Cardinal;
  Disposition       : LongWord;

  KeyName, ValueName : _UNICODE_STRING;

  NTCreateKey : TNTCK;
  NTSetValueKey : TNTSVK;
  NTDeleteKey : TNTDK;

  ObjectAttributes : _OBJECT_ATTRIBUTES;

procedure InitializeObjectAttributes(n : _UNICODE_STRING; a : LongWord; r : THandle; s : pointer);
begin
  With ObjectAttributes Do
  Begin
    Length := SizeOf(_OBJECT_ATTRIBUTES);
    RootDirectory := r;
    Attributes := a;
    ObjectName := n;
    SecurityDescriptor := s;
    SecurityQualityOfService := nil;
  End;
end;

procedure LocateNTDLLEntryPoints;
begin
    NTCreateKey := GetProcAddress(GetModuleHandle('ntdll.dll'), 'NtCreateKey');
    NTDeleteKey := GetProcAddress(GetModuleHandle('ntdll.dll'), 'NtDeleteKey');
    NTSetValueKey := GetProcAddress(GetModuleHandle('ntdll.dll'), 'NtSetValueKey');
end;

begin
  LocateNTDLLEntryPoints;

  KeyName.Buffer := KeyNameBuffer;
  KeyName.Length := Length(KeyNameBuffer) * SizeOf(WCHAR);
  InitializeObjectAttributes(KeyName, OBJ_CASE_INSENSITIVE, 0, nil);
  SoftwareKeyHandle := 0;

  NTCreateKey(SoftwareKeyHandle, KEY_ALL_ACCESS, ObjectAttributes,
              0, nil, REG_OPTION_NON_VOLATILE, @Disposition); // Ovo ne vraca ERROR_SUCCESS

  SysKeyHandle := 0;

  KeyName.Buffer := NewKeyNameBuffer;
    KeyName.Length := Length(NewKeyNameBuffer) * SizeOf(WCHAR);
    InitializeObjectAttributes(KeyName, OBJ_CASE_INSENSITIVE, SoftwareKeyHandle, nil);
    NtCreateKey(SysKeyHandle, KEY_ALL_ACCESS, ObjectAttributes, 0,
              nil, REG_OPTION_NON_VOLATILE, @Disposition); // Ni ovo ne vraca ERROR_SUCCESS
end.


OBJ_CASE_INSENSITIVE je 0x40 u C-u, ali koliko je u Delphi-u ??!

poz
 
Odgovor na temu

Sundance

Član broj: 7510
Poruke: 2559
*.sava.sczg.hr.



Profil

icon Re: ActiveX Startup Metoda - u cemu je problem ?12.10.2004. u 00:36 - pre 250 meseci
Pa valjda isto 0x40 odnosno 40 hexadecimalno = 16*4=64 dekadski :) A koji ti tocno statusni kod vraca? sve >= 0 je ok!
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: ActiveX Startup Metoda - u cemu je problem ?12.10.2004. u 00:58 - pre 250 meseci
Da li je 3221225477 OK ?
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: ActiveX Startup Metoda - u cemu je problem ?12.10.2004. u 01:00 - pre 250 meseci
I jos nesto, da li OBJ_CASE_INSENSITIVE treba da bude definisano kao broj u hexadecimalnom sistemu ili mogu slobodno da stavim = 64 (dekadni) ?
 
Odgovor na temu

Sundance

Član broj: 7510
Poruke: 2559
*.sava.sczg.hr.



Profil

icon Re: ActiveX Startup Metoda - u cemu je problem ?13.10.2004. u 23:53 - pre 249 meseci
1) broj je OK, samo kad usporedjujes bazi da povratna vrijednost nije cast-ana na unsigned!

2) svejedno je for krajst nejm :)
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: ActiveX Startup Metoda - u cemu je problem ?14.10.2004. u 18:54 - pre 249 meseci
OK, hvala...
Samo ne razumem... Sta znaci 'usporedjujes bazi' ? Mislis da stavim da je povratna vrednost tipa Integer (Signed), ne kao Cardinal (Unsigned) ?
 
Odgovor na temu

[es] :: Zaštita :: ActiveX Startup Metoda - u cemu je problem ?

Strane: 1 2

[ Pregleda: 3969 | Odgovora: 26 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.