сделал длл для замены ZwQuerySystemInformation в ntdll.dll - через системный вызов, но этот код не работает: вызывающая его прога вешает систему или получает результат 0. помогите разобраться в чём причина и как исправить. Код (Text): .686p .model flat, stdcall option casemap :none .code DllEntry Proc hInstDLL:DWORD, reason:DWORD, unused:DWORD xor eax,eax inc eax ret DllEntry EndP ZwQuerySystemInformation Proc SysInfoClass: dword, SysInfo: dword, SysInfoLen: dword, RetLen: dword mov eax, 97h lea edx, [esp+4] int 02Eh ret 10h ZwQuerySystemInformation EndP End DllEntry
Ну у меня подобный код работает нормально. Код (Text): function DoInt2Eh(SysN: Integer): NTSTATUS; stdcall; assembler; asm mov eax, [ebp + 8] lea edx, [ebp + 20] int 2Eh end; function NtQuerySystemInformation(SystemInformationClass: DWORD; SystemInformation: Pointer; SystemInformationLength: DWORD; ReturnLength: PDWORD): NTSTATUS; stdcall; assembler; asm push 0ADh call DoInt2Eh; end; function NtQueryInformationProcess(hProcess: THandle; ProcessInfoClass: Integer; ProcessInfoBuffer: Pointer; ProcessInfoBufferLength: Cardinal; BytesReturned: PDWORD): NTSTATUS; stdcall; assembler; asm push 09Ah call DoInt2Eh; end;