API nativa - Native API
A API nativa é uma interface de programação de aplicativo (API) leve usada pelo Windows NT e aplicativos de modo de usuário . Esta API é usada nos primeiros estágios do processo de inicialização do Windows NT , quando outros componentes e APIs ainda não estão disponíveis. Portanto, alguns componentes do Windows, como o Client / Server Runtime Subsystem (CSRSS), são implementados usando a API nativa. A API nativa também é usada por sub-rotinas como aquelas em kernel32.dll que implementam a API do Windows , a API baseada na qual a maioria dos componentes do Windows são criados.
A maioria das chamadas de API nativas são implementadas em ntoskrnl.exe e expostas ao modo de usuário por ntdll.dll . O ponto de entrada de ntdll.dll é LdrInitializeThunk . Chamadas de API nativas são tratadas pelo kernel por meio da Tabela Descritor de Serviço do Sistema (SSDT).
Grupos de funções
A API nativa compreende muitas funções. Eles incluem funções de tempo de execução C que são necessárias para uma execução de tempo de execução C muito básica , como strlen (), sprintf (), memcpy () e floor (). Outros procedimentos comuns como malloc (), printf (), scanf () estão faltando (o primeiro porque não especifica um heap para alocar memória e o segundo e terceiro porque usam o console, acessado somente via KERNEL32.DLL). A grande maioria das outras rotinas de API nativas, por convenção, tem um prefixo de 2 ou 3 letras, que é:
- Nt ou Zw são chamadas de sistema declaradas em ntdll.dll e ntoskrnl.exe. Quando chamados de ntdll.dll no modo de usuário, esses grupos são quase exatamente os mesmos; eles entram no modo kernel e chamam a função equivalente em ntoskrnl.exe por meio do SSDT . Ao chamar as funções diretamente em ntoskrnl.exe (possível apenas no modo kernel), as variantes Zw garantem o modo kernel, enquanto as variantes Nt não. O prefixo Zw não significa nada.
- Rtl é o segundo maior grupo de chamadas ntdll. Eles compreendem a Biblioteca C Run-Time (estendida), que inclui muitas funções de utilitário que podem ser usadas por aplicativos nativos, mas não envolvem diretamente o suporte do kernel.
- Csr são funções cliente-servidor usadas para se comunicar com o processo do subsistema Win32, csrss.exe ( csrss significa subsistema de tempo de execução cliente / servidor).
- Dbg são funções de depuração , como um ponto de interrupção de software .
- Ki são upcalls do modo kernel para eventos como despacho APC .
- Ldr são funções de carregador para manipulação de arquivos PE e início de novos processos.
- Nls para Suporte ao Idioma Nacional (semelhante às páginas de código).
- Pfx para manipulação de prefixo.
- Tp para manuseio de threadpool.
user32.dll e gdi32.dll incluem várias outras chamadas que interceptam no modo kernel. Eles não faziam parte do design original do Windows NT, como pode ser visto no Windows NT 3.5 . No entanto, devido a problemas de desempenho do hardware daquela época, foi decidido mover o subsistema gráfico para o modo kernel. Assim, as chamadas do sistema no intervalo de 0x1000-0x1FFF são atendidas por win32k.sys (em vez de ntoskrnl.exe como feito para 0-0x0FFF) e são declaradas em user32.dll e gdi32.dll. Estas funções têm o NTUSER e NtGdi prefixo (por exemplo NtUserLockWorkStation e NtGdiEnableEudc ).
Usos
Os usos das funções da API nativa incluem, mas não se limitam a:
- Habilitando e desabilitando privilégios (RtlAdjustPrivilege)
- Criação de thread remoto em processos que estão sendo executados em sessões diferentes (RtlCreateUserThread)
- Executando aplicativo nativo (RtlCreateUserProcess)
- Executando desligamento forçado (NtShutdownSystem)
Veja também
Referências
links externos
- Um site que documenta a maioria das funções da API nativa
- Por dentro dos aplicativos nativos
- Dentro da API nativa
- Estrutura de desenvolvimento de aplicativos nativos de código aberto
- Compilando programas Pascal gratuitos para a API nativa
- Ferramentas nativas do Windows NT - Um utilitário gratuito de desenvolvimento de aplicativos nativos
- Shell nativo - prompt de comando do Windows que pode iniciar antes do subsistema Winlogon e Win32