Funções da API do Windows

Através de várias bibliotecas como kernel32.dll, user32.dll, advapi32.dll e ntdll.dll, só para citar algumas, a Windows API provê inúmeras funções para os programas em usermode chamarem. Criar uma lista com todas essas funções seria insano, mas destaco aqui algumas comumente encontradas em programas para Windows. Optei também por colocar o protótipo de algumas delas, para rápida referência, mas todas as informações sobre estas funções podem ser encontradas na documentação oficial. Basta buscar por um nome de função em seu buscador preferido que certamente o site da Microsoft com a documentação da função estará entre os primeiros.

Mesmo que você não sabia tudo sobre a função funciona, essa lista te ajudará a saber onde colocar breakpoints, de acordo com o seu caso. Por exemplo, caso suspeite que um programa está abrindo um arquivo, pode colocar um breakpoint nas funções CreateFileA e CreateFileW.

Vamos agora à lista de funções, separadas por categoria.

Anti-debugging

Utilizadas em técnicas básicas para evitar a depuração de aplicações.

BOOL IsDebuggerPresent();
BOOL CheckRemoteDebuggerPresent(
  [in]      HANDLE hProcess,
  [in, out] PBOOL  pbDebuggerPresent
);

Caixas de Mensagens

Utilizadas para exibir janelas com mensagens.

int MessageBoxA(
  [in, optional] HWND    hWnd,
  [in, optional] LPCTSTR lpText,
  [in, optional] LPCTSTR lpCaption,
  [in]           UINT    uType
);

Ver também: MessageBoxEx.

Caixas de Texto

Usadas para ler textos de caixas de texto.

Criptografia

Implementam algoritmos de criptografia como algoritmos de hash e criptografia simétrica e assimétrica.

Ver também: CryptDecrypt, CryptGenKey, e CryptImportKey.

Data e Hora

Configuram e consultam data e hora do sistema.

Ver também: SetSystemTime e SetLocalTime.

Discos e Volumes

Pegam informações sobre num disco, pen drive, drives de rede mapeados, etc e também sobre seus volumes (partições).

Ver também: GetDiskFreeSpace, GetDriveType e GetVolumeInformationA.

Entrada e Saída (I/O)

Manipulam arquivos e outros objetos.

CreateFileA e CreateFileW abrem para ler e/ou para escrever e também criam e até truncam (zeram) arquivos no disco. Também trabalham com outros objetos como pipes, diretórios e consoles.

Ver também: CopyFile, CreateFileMapping, DeleteFile, GetFullPathName, GetTempPath, LoadLibrary, MoveFile, OpenFile, OpenFileMapping e OpenMutex.

Internet

Funções que falam com a internet, normalmente via HTTP.

Ver também: HttpSendRequestA, InternetOpenA, InternetOpenW, InternetOpenUrlW e InternetReadFile.

Janelas

Habilitam ou desabilitam janelas ou itens dentro dela.

Memória

Gerenciam memória, alocando ou deselocando, configurando permissões, dentre outras operações.

Ver também: VirtualAllocEx, VirtualFree, VirtualLock, VirtualProtect e VirtualQuery.

Processos e Threads

Manipulam processos e threads. Podem enumerar, alterar o estado, executar e mais.

Ver também: CreateRemoteThread, CreateThread, CreateToolhelp32Snapshot, ExitProcess, ExitThread, Heap32First, Heap32ListFirst, Heap32ListNext, Heap32Next, Module32First, Module32Next, OpenProcess, OpenProcessToken, OpenThreadToken, Process32First, Process32Next, ShellExecute, TerminateProcess, Toolhelp32ReadProcessMemory, WriteProcessMemory, ZwQueryInformationProcess e ZwSetInformationThread.

Registro

Criam e alteram chaves e valores no registro.

Ver também: RegCloseKey, RegEnumKeyExA, RegOpenKey, RegOpenKeyEx, RegQueryValueA, RegSetValueW, RegSetValueExA e RegSetValueExW.

Strings

Manipulam cadeias de texto.

Ver também: lstrcat, lstrcpy e lstrlen.

Last updated

Was this helpful?