syscall в XP

Тема в разделе "WASM.NT.KERNEL", создана пользователем RamMerLabs, 8 янв 2007.

  1. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    сделал длл для замены ZwQuerySystemInformation в ntdll.dll - через системный вызов, но этот код не работает: вызывающая его прога вешает систему или получает результат 0.
    помогите разобраться в чём причина и как исправить.

    Код (Text):
    1. .686p
    2. .model flat, stdcall
    3. option casemap :none
    4.  
    5. .code
    6. DllEntry Proc hInstDLL:DWORD, reason:DWORD, unused:DWORD
    7.  xor eax,eax
    8.  inc eax
    9.  ret
    10. DllEntry EndP
    11.  
    12. ZwQuerySystemInformation Proc SysInfoClass: dword, SysInfo: dword, SysInfoLen: dword, RetLen: dword
    13.  mov eax, 97h
    14.  lea edx, [esp+4]
    15.  int 02Eh
    16.  ret 10h
    17. ZwQuerySystemInformation EndP
    18.  
    19. End DllEntry
     
  2. Dostoevsky

    Dostoevsky New Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2006
    Сообщения:
    33
    RamMerLabs
    Эта DLL перехватывает ZwQuerySystemInformation? Очень интересно.
     
  3. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    не перехватывает, а содержит системный вызов данной функции, такой же как в ntdll
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Ну у меня подобный код работает нормально.
    Код (Text):
    1. function DoInt2Eh(SysN: Integer): NTSTATUS; stdcall; assembler;
    2. asm
    3.  mov eax, [ebp + 8]
    4.  lea edx, [ebp + 20]
    5.  int 2Eh
    6. end;
    7.  
    8. function NtQuerySystemInformation(SystemInformationClass: DWORD; SystemInformation: Pointer;
    9.  SystemInformationLength: DWORD; ReturnLength: PDWORD): NTSTATUS; stdcall; assembler;
    10. asm
    11.  push 0ADh
    12.  call DoInt2Eh;
    13. end;
    14.  
    15. function NtQueryInformationProcess(hProcess: THandle; ProcessInfoClass: Integer; ProcessInfoBuffer: Pointer;
    16.  ProcessInfoBufferLength: Cardinal; BytesReturned: PDWORD): NTSTATUS; stdcall; assembler;
    17. asm
    18.  push 09Ah
    19.  call DoInt2Eh;
    20. end;
     
  5. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    RamMerLabs
    97h это из Win2000. В XP 0adh