Usando funções Cofre cadeia de caracteres

Muitos problemas de segurança do sistema são causados pela manipulação de buffer ruim e pelos estouros de buffer resultantes. O tratamento de buffer ruim geralmente está associado a operações de manipulação de cadeia de caracteres. As funções de manipulação de cadeia de caracteres padrão fornecidas pelas bibliotecas de runtime da linguagem C/C++ (strcat, strcpy, sprintf e assim por diante) não impedem a escrita além do fim dos buffers.

Dois novos conjuntos de funções de manipulação de cadeia de caracteres, chamadas de funções de cadeia de caracteres seguras, fornecem processamento adicional para o tratamento adequado de buffer em seu código. Essas funções de cadeia de caracteres seguras estão disponíveis no WDK (Kit de Driver do Windows) e para o Microsoft Windows XP SP1 e versões posteriores do DDK (Driver Development Kit) e Windows SDK. Eles se destinam a substituir suas contrapartes C/C++ e rotinas semelhantes fornecidas pelo Windows.

Um conjunto de funções de cadeia de caracteres seguras é para uso no código no modo kernel. Essas funções são protótipos em um arquivo de cabeça chamado Ntstrsafe.h. Esse arquivo de título e uma biblioteca associada estão disponíveis no WDK.

O outro conjunto de funções de cadeia de caracteres seguras é para uso em aplicativos no modo de usuário. Um arquivo de header correspondente, Strsafe.h, contém protótipos para essas funções. Esse arquivo e uma biblioteca associada estão disponíveis no SDK do Windows. Para obter mais informações sobre Strsafe.h, consulte Usando as funções Strsafe.h.

O conjunto de funções de cadeia de caracteres segura do modo de kernel consiste nos dois subconjunto a seguir:

As funções de cadeia de caracteres segura no modo kernel fornecem os seguintes recursos:

  • Cada função de cadeia de caracteres segura recebe o tamanho do buffer de destino como entrada. Portanto, a função pode garantir que ela não seja escrita após o final do buffer.

  • As funções de cadeia de caracteres Unicode e ANSI encerram todas as cadeias de caracteres de saída com um caractere NULL, mesmo se a operação truncar o resultado pretendido.

  • Todas as funções de cadeia de caracteres seguras retornam um valor NTSTATUS, com apenas um código de êxito possível (STATUS_SUCCESS).

  • A maioria das funções de cadeia de caracteres seguras está disponível em uma versão contada por byte e em uma versão contada por caracteres. Por exemplo, RtlStringCbCata concatena duas cadeias de caracteres contadas por byte e RtlStringCchCata concatena duas cadeias de caracteres contadas.

  • A maioria das funções de cadeia de caracteres seguras está disponível em uma versão estendida, com sufixo ex, que fornece funcionalidade adicional. Por exemplo, RtlStringCbCatExa estende a funcionalidade de RtlStringCbCata.

Esta seção inclui os tópicos a seguir:

Resumo das funções Kernel-Mode Cofre cadeia de caracteres

Importando funções Kernel-Mode Cofre cadeia de caracteres