arrow-left

All pages
gitbookPowered by GitBook
1 of 1

Loading...

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.

hashtag
Anti-debugging

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

hashtag
Caixas de Mensagens

Utilizadas para exibir janelas com mensagens.

Ver também: MessageBoxEx.

hashtag
Caixas de Texto

Usadas para ler textos de caixas de texto.

hashtag
Criptografia

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

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

hashtag
Data e Hora

Configuram e consultam data e hora do sistema.

Ver também: SetSystemTime e SetLocalTime.

hashtag
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.

hashtag
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.

hashtag
Internet

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

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

hashtag
Janelas

Habilitam ou desabilitam janelas ou itens dentro dela.

hashtag
Memória

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

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

hashtag
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

hashtag
Registro

Criam e alteram chaves e valores no registro.

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

hashtag
Strings

Manipulam cadeias de texto.

Ver também: lstrcat, lstrcpy e lstrlen.

,
OpenThreadToken
,
Process32First
,
Process32Next
,
ShellExecute
,
TerminateProcess
,
Toolhelp32ReadProcessMemory
,
WriteProcessMemory
,
ZwQueryInformationProcess
e
ZwSetInformationThread
.
BOOL IsDebuggerPresent();
BOOL CheckRemoteDebuggerPresent(
  [in]      HANDLE hProcess,
  [in, out] PBOOL  pbDebuggerPresent
);
int MessageBoxA(
  [in, optional] HWND    hWnd,
  [in, optional] LPCTSTR lpText,
  [in, optional] LPCTSTR lpCaption,
  [in]           UINT    uType
);
UINT GetDlgItemTextA(
  [in]  HWND  hDlg,
  [in]  int   nIDDlgItem,
  [out] LPSTR lpString,
  [in]  int   cchMax
);
BOOL CryptEncrypt(
  [in]      HCRYPTKEY  hKey,
  [in]      HCRYPTHASH hHash,
  [in]      BOOL       Final,
  [in]      DWORD      dwFlags,
  [in, out] BYTE       *pbData,
  [in, out] DWORD      *pdwDataLen,
  [in]      DWORD      dwBufLen
);
void GetLocalTime(
  [out] LPSYSTEMTIME lpSystemTime
);
DWORD GetLogicalDrives();
HANDLE CreateFileA(
  [in]           LPCSTR                lpFileName,
  [in]           DWORD                 dwDesiredAccess,
  [in]           DWORD                 dwShareMode,
  [in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  [in]           DWORD                 dwCreationDisposition,
  [in]           DWORD                 dwFlagsAndAttributes,
  [in, optional] HANDLE                hTemplateFile
);
HINTERNET InternetOpenUrlA(
  [in] HINTERNET hInternet,
  [in] LPCSTR    lpszUrl,
  [in] LPCSTR    lpszHeaders,
  [in] DWORD     dwHeadersLength,
  [in] DWORD     dwFlags,
  [in] DWORD_PTR dwContext
);
BOOL EnableMenuItem(
  [in] HMENU hMenu,
  [in] UINT  uIDEnableItem,
  [in] UINT  uEnable
);
BOOL EnableWindow(
  [in] HWND hWnd,
  [in] BOOL bEnable
);
LPVOID VirtualAlloc(
  [in, optional] LPVOID lpAddress,
  [in]           SIZE_T dwSize,
  [in]           DWORD  flAllocationType,
  [in]           DWORD  flProtect
);
BOOL CreateProcessA(
  [in, optional]      LPCSTR                lpApplicationName,
  [in, out, optional] LPSTR                 lpCommandLine,
  [in, optional]      LPSECURITY_ATTRIBUTES lpProcessAttributes,
  [in, optional]      LPSECURITY_ATTRIBUTES lpThreadAttributes,
  [in]                BOOL                  bInheritHandles,
  [in]                DWORD                 dwCreationFlags,
  [in, optional]      LPVOID                lpEnvironment,
  [in, optional]      LPCSTR                lpCurrentDirectory,
  [in]                LPSTARTUPINFOA        lpStartupInfo,
  [out]               LPPROCESS_INFORMATION lpProcessInformation
);
LSTATUS RegSetValueA(
  [in]           HKEY   hKey,
  [in, optional] LPCSTR lpSubKey,
  [in]           DWORD  dwType,
  [in]           LPCSTR lpData,
  [in]           DWORD  cbData
);
int lstrcmpA(
  [in] LPCSTR lpString1,
  [in] LPCSTR lpString2
);