access violation........,блин
PTOZWQUERYINFORMATIONPROCESS TYPEDEF PROTO:DWORD, : DWORD, : DWORD, : DWORD, : DWORD
PZWQUERYINFORMATIONPROCESS TYPEDEF PTR PTOZWQUERYINFORMATIONPROCESS
PID equ 1280 ; может быть любой программы
_PROCESS_BASIC_INFORMATION STRUCT ; sizeof = 18h
ExitStatus DWORD ?
PebBaseAddress DWORD ? ; PPEB
AffinityMask DWORD ?
BasePriority DWORD ? ; KPRIORITY
UniqueProcessId DWORD ?
InheritedFromUniqueProcessId DWORD ?
_PROCESS_BASIC_INFORMATION ENDS
.data?
pbi _PROCESS_BASIC_INFORMATION <?>
ZwQueryInformationProcess PZWQUERYINFORMATIONPROCESS ?
hProcess dd ?
hModule dd ?
.data
szNtdll db "ntdll",0
szOK db "OK",0
szFuncName db "ZwQueryInformationProcess",0
.code
invoke GetModuleHandle,offset szNtdll
mov hModule,eax
invoke GetProcAddress,eax,offset szFuncName
mov ZwQueryInformationProcess,eax
invoke OpenProcess,PROCESS_ALL_ACCESS,0,PID
mov hProcess,eax
invoke ZwQueryInformationProcess,eax,0,offset pbi,sizeof(_PROCESS_BASIC_INFORMATION),NULL
test eax,eax
jnz FINISH
invoke MessageBox,NULL,offset szOK,offset szOK ,0
FINISH:
invoke ExitProcess,0
(например AdjustTokenPrivilege)применятся
аддресация с помощью регистра ESP
в данном случае :
invoke ZwQueryInformationProcess,eax,0,offset pbi,sizeof(_PROCESS_BASIC_INFORMATION),NULL
а нужно хотя бы так
lea EBX,[ESP]
invoke ZwQueryInformationProcess,eax,0, EBX ,sizeof(_PROCESS_BASIC_INFORMATION),NULL
в этом случае данные будут получены по аддресу EBX
и функция будет работать