So, jetzt habe ich den code mal überarbeitet.
Ich initialisierte den "SecurityDescriptor" und prüfe diesen zum Schluss mit "IsValidSecurityDescriptor".
EAX gibt mir als wert EAX = 00000001 zurück. Alles super, d.h. der initialisierte SecurityDescriptor ist Gültig.
Kann jedoch mit dem
API call "RegGetKeySecurity2 noch immer nicht die DACL in den SecurityDescriptor zurück geben lassen. Zugriffsverletzung. Könnte heulen.
Habe ich vieleicht irgendwas übersehen? Mir fliegen bald die
raus....
Delphi-Quellcode:
.data
lpSubKey
db "SOFTWARE\Classes\.7z\2",0
phkResult dd 0
.data?
pSecurityDescriptor SECURITY_DESCRIPTOR <>
buffer_addr dd ?
.code
start:
xor eax,eax
nop
nop
push offset phkResult
push KEY_ALL_ACCESS
push 0
push offset lpSubKey
push HKEY_LOCAL_MACHINE
call RegOpenKeyEx ; EAX must zero
nop
nop
xor eax,eax
nop
nop
push SECURITY_DESCRIPTOR_MIN_LENGTH
push GPTR
call GlobalAlloc ; EAX must nonzero
nop ; EAX = (new
object handle)
nop
mov buffer_addr,eax
nop
nop
xor eax,eax
nop
nop
push SECURITY_DESCRIPTOR_REVISION
push offset buffer_addr
call InitializeSecurityDescriptor ; EAX must nonzero
nop
nop
xor eax,eax
nop
nop
push offset buffer_addr
call IsValidSecurityDescriptor ; EAX must nonzero
nop ; EAX = 00000001
nop
xor eax,eax
nop
nop
push sizeof buffer_addr
push offset buffer_addr
push DACL_SECURITY_INFORMATION
push offset phkResult
call RegGetKeySecurity
nop
nop
push phkResult
call RegCloseKey
nop
nop
push offset buffer_addr
call GlobalFree
nop
@_ExitProcess:
push 0
call ExitProcess
end start
Zugriffsverletzung:
Delphi-Quellcode:
EAX 00000004
ECX 00403017 RegAth.00403017
EDX 00000000
EBX 00000000
ESP 0012FF14
EBP 0012FF74
ESI 02000000
EDI 00000000
EIP 761BC7FD advapi32.761BC7FD
C 0 ES 0023 32bit 0(FFFFFFFF)
P 0 CS 001B 32bit 0(FFFFFFFF)
A 0 SS 0023 32bit 0(FFFFFFFF)
Z 0 DS 0023 32bit 0(FFFFFFFF)
S 0 FS 003B 32bit 7FFDE000(FFF)
T 0 GS 0000 NULL
D 0
O 0 LastErr ERROR_SUCCESS (00000000)
EFL 00010202 (NO,NB,NE,A,NS,PO,GE,G)
ST0 empty 0.0
ST1 empty 0.0
ST2 empty 0.0
ST3 empty 0.0
ST4 empty 0.0
ST5 empty 0.0
ST6 empty 0.0
ST7 empty 0.0
3 2 1 0 E S P U O Z D I
FST 0000 Cond 0 0 0 0 Err 0 0 0 0 0 0 0 0 (GT)
FCW 027F Prec NEAR,53 Mask 1 1 1 1 1 1