push PAGE_READWRITE push MEM_COMMIT+MEM_RESERVE push size push 0 call [VirtualAlloc] mov [buffer], eax push 0 push size push buffer push 5 ; ýòî íîìåð êàê ÿ âûÿñíèë SystemProcessAndThreadsInformation call [ZwQuerySystemInformation] ;mov [qwe],eax ;---------------------- ;cmp eax,0 test eax,eax jnz _exit после вызова ZwQuerySystemInformation в eax помещается C0000005, наскоко я знаю при удачном вызове в eax должен поместиться 0, что в этом коде не так?
Code (Text): STATUS_ACCESS_VIOLATION equ 0C0000005h А ты Debug-привилегии включил? С FASM не очень знаком, но: Code (Text): mov [buffer], eax может быть Code (Text): mov buffer, eax а ещё лучше Code (Text): push PAGE_READWRITE push MEM_COMMIT+MEM_RESERVE push size push 0 call [VirtualAlloc] mov edi, eax push 0 push size push edi push 5 call [ZwQuerySystemInformation] и не забывай VirtualFree вызывать.
на чем пишешь? может, push [buffer] все таки за последние насколько дней уже раз пять видел аналогичные вопросы )
Nouzui, по ходу, первый раз был оригинальный вопрос, а потом все кому не лень начала повторять примеры из того топика, но не у всех получается.
Code (Text): format PE GUI 4.0 entry start include '%fasminc%\win32a.inc' ;------------------------------------------ section '.data' data readable writable buffer dd ? size equ 16*1024 ;------------------------------------------ section '.code' code readable writable executable start: push PAGE_READWRITE push MEM_COMMIT+MEM_RESERVE push size push 0 call [VirtualAlloc] mov edi, eax push 0 push size push edi push 5 ; ýòî íîìåð êàê ÿ âûÿñíèë SystemProcessAndThreadsInformation call [ZwQuerySystemInformation] test eax,eax jnz _exit ; прыгает на _exit, так что я хз, че не так ...
видишь, уже прогресс ) "The specified information record length does not match the length required for the specified information class."
Great lol... вообщет при c0000004 ZwQuerySystemInformation должна возвращать требуемый объем памяти через последний параметр а может и не должна... она же недокументированная вроде?
Nouzui, должна и возвращает. Но... Допустим, нужно передать условный массив структур (размер структуры = N), тогда ZwQuerySystemInformation возвратит требуемый размер в том случае, если указанный ей размер будет не менее N. Проверено.
т.е. если ZwQuerySystemInformation возвращает ошибку, то в посл. параметре можно посмотреть скоко надо?
Да, но только, если тот размер, который ты уже передал 3-им параметром не меньше размера структуры, которую ты передаёшь (не массива структур, а только одной структуры.)
RamMerLabs может, у тебя просто в этом случае возвращалось что-то вроде 0x80000002 (STATUS_DATATYPE_MISALIGNMENT)?