arrow-left

All pages
gitbookPowered by GitBook
1 of 6

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Tabela ASCII

       0−     1−     2−     3−     4−     5−     6−     7−
−0     NUL    DLE    SP     0      @      P      `      p
−1     SOH    DC1    !      1      A      Q      a      q
−2     STX    DC2    "      2      B      R      b      r
−3     ETX    DC3    #      3      C      S      c      s
−4     EOT    DC4    $      4      D      T      d      t
−5     ENQ    NAK    %      5      E      U      e      u
−6     ACK    SYN    &      6      F      V      f      v
−7     BEL    ETB    '      7      G      W      g      w
−8     BS     CAN    (      8      H      X      h      x
−9     HT     EM     )      9      I      Y      I      y
−A     LF     SUB    *      :      J      Z      j      z
−B     VT     ESC    +      ;      K      [      k      {
−C     FF     FS     ,      <      L      \      l      |
−D     CR     GS     −      =      M      ]      m      }
−E     SO     RS     .      >      N      ^      n      ~
−F     SI     US     /      ?      O      _      o      DEL

Exemplos de Código em Assembly

Reuni aqui alguns exemplos de códigos em Assembly, úteis para a compreensão de trechos de binários quando fazemos engenharia reversa.

hashtag
Zerar Variáveis

xor eax, eax

hashtag
Contar de Um a Dez

Outra versão:

hashtag
Testar Se É Zero

Outra versão:

hashtag
Fazer Nada

Parece bobo, mas "fazer nada" corretamente significa não alterar nenhuma flag, nem nenhum registrador. A instrução em Assembly Intel mais famosa para tal é a NOP (NO Operation):

Mas também é possível atingir o mesmo resultado com instruções como a XCHG (eXCHanGe). Por exemplo, se você trocar o valor do registrador EAX com ele mesmo, acaba por não fazer "nada":

Instruções que não fazem nada também podem ser utilizadas como padding necessário para o correto alinhamento das seções do binário em memória. Já vi o GCC utilizar XCHG AX, AX neste caso.

xor ecx, ecx
loop:
  inc ecx
  cmp ecx, 0xa
  jl loop
mov ecx, 0
loop:
  add ecx, 1
  cmp ecx, 0x9
  jle loop
cmp eax, 0
je destino
test eax, eax
je destino
nop
xchg eax, eax

Ferramentas

Esta seção aborda não somente ferramentas utilizadas no livro, mas também outras que vale a pena citar na esperança que o leitor se sinta atraído a baixar, usar e tirar suas próprias conclusões em relação à eficiência delas.

hashtag
Editores Hexadecimais

Este tipo de ferramenta é útil para editar arquivos binários em geral, não somente executáveis, dumpar (copiar) conteúdo de trechos de arquivos, etc. Também é possível editar uma partição ou disco com bons editores hexadecimal a fim de recuperar arquivos, por exemplo.

Nome
Licença
Descrição

hashtag
Analisadores Estáticos de Executáveis

Analisam estaticamente os binários, sem carregá-los. São úteis para uma primeira visão sobre um executável desconhecido.

Nome
Licença
Descrição

hashtag
Bibliotecas para parsear Executáveis

Nome
Licença
Descrição

hashtag
Assemblers

Nome
Licença
Descrição

hashtag
Disassemblers

Nome
Licença
Descrição

hashtag
Debuggers

Nome
Licença
Descrição

hashtag
Desofuscadores

Nome
Licença
Descrição

hashtag
Descompiladores

hashtag
.NET

Nome
Licença
Descrição

hashtag
Delphi

Nome
Licença
Descrição

hashtag
Genéricos (C, C++, Delphi, etc)

Nome
Licença
Descrição

hashtag
Java

Nome
Licença
Descrição

hashtag
Visual Basic

Nome
Licença
Descrição

hashtag
Emuladores

Nome
Licença
Descrição

hashtag
Frameworks

Nome
Licença
Descrição

hashtag
Monitores de Processos

Nome
Licença
Descrição

hashtag
Sandboxes (Linux)

Existem outros projetos como Limon, Detux, HaboMalHunter, mas na lista abaixo procurei deixar somente os que estão ativos.

Nome
Licença
Descrição

hashtag
Sandboxes (Windows)

Esta lista não inclui serviços de sandbox puramente comerciais.

Nome
Licença
Descrição

hashtag
Sandboxes (Online)

Nome
Licença
Descrição

hashtag
Visualizadores Hexadecimais

Nome
Licença
Descrição

Abaixo um comparativo onde dumpamos os primeiros 32 bytes de um binário /bin/ls utilizando os visualizadores acima:

hashtag
Outras

Nome
Licença
Descrição

Pago, somente para Windows, antigo, mas muito bem feito.

Livre

Somente para macOS, com recursos legais como diff e data inspector.

Livre

Multiplataforma, interface de texto (TUI), suporta editar via SSH. É novo e tem futuro!

Shareware

Linux, macOS e Windows. Tem templates (chamados de "grammars"), scripting em Python e Lua e compara binários.

Livre

Baseado na ncurses, portanto de interface gráfica de texto. Tinha potencial, mas o desenvolvimento parou no final de 2022.

Comercial

Editor (e disassembler) muito poderoso, principalmente por conta de seus módulos HEM. Tem suporte à vários formatos e é muito usado por analistas de malware, mas é pago.

Livre

Interface gráfica baseada em texto, parecido com o Hiew. Tem muitos recursos, mas infelizmente o desenvolvimento parou em 2015. Hora de alguém fazer um fork!

Freeware

Bem bom. Possui recursos extras como geração de hashes e suporte a abrir discos.

Livre

Impressionante editor gráfico para Windows, macOS e Linux. Possui uma linguagem de patterns para aplicar no arquivo, exporta/importa patches e muito mais.

Livre

Nova proposta de um editor especificamente para engenharia reversa.

Comercial

Para macOS, desenvolvido por quem faz o Hexinator. Tem o mesmo nível de recursos.

Comercial

Editor com edições especiais focadas em forense, mas faz tudo que os outros fazem também. Somente para Windows.

Livre

Multiplataforma, recursos interessantes. Infelizmente o desenvolvimento parou em 2017.

Freeware

Sem muitos recursos, mas quebra um galho no Windows para uma edição rápida.

Freeware

Parser de linha de comando para Windows. Suporta arquivos NE, LX/LE, PE/PE32+, ELF/ELF64 (little-endian), Mach-O (little-endian), e TE.

Freeware

Detecta compilador, packer, protectors e edita os arquivos, além de suportar vários plugins loucos. Tem versão VIP mediante doação.

Livre

Mais um nacional pra uma primeira impressão de arquivos suspeitos, URLs e domínios. Checa também APKs.

Livre

Parte do GNU binutils, também analisa PE, além de ELF, a.out, etc.

Freeware

Analisador gráfico (Qt) multiplataforma que também detecta packers/protectors.

Livre

Analisador online muito legal!

Freeware

Analisador de PE padrão da indústria, com foco em malware. Tem versão Pro (paga).

Livre

Também parte do binutils, analisador de ELF.

Livre

Anteriormente chamado de pev, este é o nosso 💚 toolkit de ferramentas de linha de comando para análise de PE. Artigo introdutório .

Freeware

Analisador e editor com suporte a plugins, assinaturas do antigo PEiD, editor de recursos e mais.

Livre

Biblioteca em .Net para PE.

Livre

Biblioteca em Java para PE.

Livre

Biblioteca em Python para parsear binários ELF.

Livre

Multiplataforma, escrito com base no NASM pra ser um substituto mas acho que não vingou. hehe

Livre

Debugger que roda no nível do hypervisor, também conhecido como ring -1.

Freeware

Poderoso debugger, apesar de não mais mantido.

Livre

O Python Exploit Development Assistance também extende o GDB, assim como o GEF. A interface é um pouco diferente, no entanto.

Livre

Debugger para Linux que implementa a "depuração reversa", isto é, você executa uma vez o alvo e o rr grava tudo. Depois você depura essa gravação.

Freeware

Debugger ring0/3, parte integrante do SDK do Windows.

Livre

Debugger user-mode para Windows com suporte a 32 e 64-bits.

hexdump/hd

Livre

Padrão no BSD e Linux. Se chamado por "hd" exibe saída em hexa/ASCII.

od

Livre

Padrão no UNIX e Linux. O comando od -tx1 produz uma saída similar à do hd.

xxd

Livre

Vem com o vim. Uma saída similar à do hd é obtida com xdd -g1.

010 Editorarrow-up-right

Shareware

Multiplataforma, bastante usado. Suporta templates e scripts. Alguns dizem que é o melhor atualmente.

bviarrow-up-right

Livre

Editor de interface de texto (TUI), similar ao HT Editor. Tem versão para DOS/Windows mas reina mesmo é no Linux.

fhexarrow-up-right

Livre

Editor gráfico multiplataforma capaz de exibir o binário graficamente, além de suportar expressões regulares na busca.

GNU pokearrow-up-right

Livre

Editor REPL genérico (não só para executáveis) com uma abordagem muito interessante. Escrevemos um artigoarrow-up-right sobre.

Helium Hex Edtitorarrow-up-right

Comercial

Editor incrível para Windows. Tem recursos muito legais como edição e alocação de memória, operações com dados (XOR, SHL, etc) e na versão paga tem suporte a vários algoritmos criptográficos, disassembly e mais.

Hex Workshoparrow-up-right

capaarrow-up-right

Livre

Detecta as capacidades de executáveis PE e shellcodes para Windows.

CFF Explorerarrow-up-right

Freeware

Sendo parte do Explorer Suite, é na real um editor de PE. Com ele é possível adicionar imports, remover seções, etc.

DIE (Detect It Easy)arrow-up-right

Freeware

Detecta compilador, linker, packer e protectors em binários. Também edita os arquivos.

DUMPBINarrow-up-right

Freeware

BFDarrow-up-right

Livre

Binary File Descriptor é a biblioteca usada por programas como readelf e objdump. Tem suporte a muitos tipos de arquivos, incluindo PE e ELF, claro.

libpearrow-up-right

Livre

Nossa 💚 biblioteca multiplataforma para parsing de arquivos PE.

libPeConvarrow-up-right

Livre

Biblioteca em C++ para PE usada pelo PE-Bear.

pefilearrow-up-right

Livre

flat assembler (FASM)arrow-up-right

Livre

Assembler bem recente que já vem com vários exemplos de código. Windows e Linux.

GNU Assembler (GAS)arrow-up-right

Livre

Também chamado simplesmente de as, é o assembler do projeto GNU e provavelmente já está instalado no seu Linux!

Microsoft Macro Assembler (MASM)arrow-up-right

Freeware

Atualmente já vem com o Visual Studio da Microsoft, mesmo na versão Community. Segue um tutorial de como compilar um "Hello, world"arrow-up-right.

Netwide Assembler (NASM)arrow-up-right

Livre

Binary Ninjaarrow-up-right

Comercial

Novo disassembler que teoricamente compete com o IDA. Possui versão online gratuitaarrow-up-right mediante registro.

Ghidraarrow-up-right

Livre

Disassembler livre lançado pela NSA. Temos um treinamentoarrow-up-right em vídeo sobre ele.

Hopperarrow-up-right

Comercial

Disassembler com foco em binários de Linux e macOS.

IDAarrow-up-right

Comercial

dnSpyarrow-up-right

Livre

Somente para .NET, descompila, debuga e (dis)assembla.

edb (Evan's Debugger)arrow-up-right

Livre

Debugger gráfico (Qt) com foco em binários ELF no Linux.

GDB (GNU Debugger)arrow-up-right

Livre

Super conhecido debugger pra Linux do projeto GNU. Tem uma versão não oficial pra Windowsarrow-up-right também. É modo texto, mas possui vários front-ends como GDBFrontendarrow-up-right, dentre outrosarrow-up-right.

GEFarrow-up-right

Livre

de4dotarrow-up-right

Livre

Para .NET. Conhece vários ofuscadores e permite trabalhar genericamente também.

Threadteararrow-up-right

Livre

Para programas feito em Java. Suporta os ofuscadores mais comuns como Stinger e ZKM.

ILSpyarrow-up-right

Livre

Descompilador multiplataforma para .NET.

IDR (Interactive Delphi Reconstructor)arrow-up-right

Livre

Para binários compilados em Delphi.

Rekoarrow-up-right

Livre

Descompilador genérico com versão de linha de comando, gráfica e até web.

RetDec (Retargetable Decompiler)arrow-up-right

Livre

Descompilador para C/C++ feito pelo time do Avast. Inclui detector de compilador e packer, plugins para IDA e radare2.

Snowmanarrow-up-right

Livre

Descompilador livre para C/C++. Pode ser usado como plugin no IDA, x64dbg, etc.

CFRarrow-up-right

Livre

Descompilador para Java de linha de comando. O output é o código fonte e só.

IntelliJ IDEAarrow-up-right

Mista

Na verdade é uma IDE para programação em Java mas mesmo a versão Community possui descompilador e debugger para classes compiladas em Java.

JD-GUIarrow-up-right

Livre

Descompilador para Java com GUI.

Procyonarrow-up-right

Livre

VB Decompilerarrow-up-right

Comercial

Descompilador para VB5/6 e disassembler para VB .NET.

Qilingarrow-up-right

Livre

Framework que combina emulação com instrumentação de binários. É possível emular programas de Windows e Linux, além de outros SOs, incluindo ring0.

Speakeasyarrow-up-right

Livre

Emulador feito pela FireEye, inicialmente para programas nativos de Windows (ring0) mas possui um crescente suporta à programas em usermode (ring3), emulando várias das funções da Windows API.

angrarrow-up-right

Livre

Framework para análise estática e simbólica de binários.

Fridaarrow-up-right

Livre

Framework para instrumentação dinâmica de binários.

PANDAarrow-up-right

Livre

Plataforma de análise dinâmica baseada no QEMU, que faz até replay de ações.

Radarearrow-up-right

Livre

Process Explorerarrow-up-right

Freeware

Clássica ferramenta do conjunto SysInternals, que exibe muito mais que o Gerenciador de Tarefas comum.

System Explorerarrow-up-right

Livre

Versão do Pavel Yosifovich que conta com algumas vantagens sobre o Process Explorer, como visualizar informações de processos protegidos (através de um driver), listar todas as threads abertas no Windows, todos os jobs, etc.

System Informerarrow-up-right (antigo Process Hacker)

Livre

Talvez o melhor da categoria. Mostra os handles, objetos, processos, quem tá usando o que e muita mais.

LiSaarrow-up-right

Livre

Possui uma API bem simples e suporta binários ELF compilados para x86, x86-64, ARM e MIPS.

DRAKVUF Sandboxarrow-up-right

Livre

Projeto co-financiado pelo CERT da Polônia que usa o engine DRAKVUF para criar uma sandbox de Windows 7 ou Windows 10 sem agente no guest.

CAPEarrow-up-right

Livre

Sandbox específica para extração de configuração de malware.

Cuckooarrow-up-right

Livre

Provavelmente a sandbox mais popular e utilizada.

Any.Runarrow-up-right

Community

Apesar do nome, só suporta artefatos de Windows, mas é muito bom!

Hybrid Analysisarrow-up-right

Community

Sandbox muito boa. Também é um portal de investigação inclusive com suporte à regras de Yara.

Joe Sandboxarrow-up-right

Community

Um dos primeiros serviços. Suporta ELF (x86 e x86-64), PE e documentos.

hdumparrow-up-right

Livre

Clone nosso 💚, multiplataforma (funciona no Windows!) do hexdump que imita a saída do hd.

heksaarrow-up-right

Livre

Multiplataforma, com saída colorida e recursos interessantes como seek negativo (a partir do fim do arquivo).

HexLassoarrow-up-right

Gratuito

Visualizador web que faz análises estatísticas visuais muito úteis.

hexylarrow-up-right

Livre

Kaitai Structarrow-up-right

Livre

Se você pensa em parsear um formato desconhecido ou tá estudando PE/ELF, vale olhar este gerador de parser livre.

Intezer Analyzerarrow-up-right

Community

Online. Requer um pequeno cadastro. Tem um recursos de identificar "genes" estaticamente de famílias de binários.

Comercial

Analisador de PE de linha de comando disponível no SDK do Visual Studio.

Famosa biblioteca em Python pra fazer qualquer coisa com arquivos PE.

Multiplataforma, suporte à sintaxe Intel e bem popular. Veja um .

Disassembler interativo padrão de mercado. Possui versão freeware.

O GDB Enhanced Features extende o GDB com recursos para engenharia reversa.

Para Java, com suporte a recursos novos da linguagem. É modo texto mas há GUI's disponíveis documentadas no link.

Suíte completa com debugger, disassembler e outras ferramentas para quase todo tipo de binário existente!

Multiplataforma, também com output colorido, exibição de borda, etc.

$ hdump -n 32 /bin/ls
00000000  7f 45 4c 46 01 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
00000010  03 00 28 00 01 00 00 00  21 3e 00 00 34 00 00 00  |..(.....!>..4...|

$ heksa -l 32 /bin/ls
00000┊7f 45 4c 46 01 01 01 00  00 00 00 00 00 00 00 00┊.ELF...Ø ØØØØØØØØ
00010┊03 00 28 00 01 00 00 00  21 3e 00 00 34 00 00 00┊.Ø(Ø.ØØØ !>ØØ4ØØØ

$ hexyl -n32 /bin/ls
┌────────┬─────────────────────────┬─────────────────────────┬────────┬────────┐
│00000000│ 7f 45 4c 46 02 01 01 00 ┊ 00 00 00 00 00 00 00 00 │•ELF•••0┊00000000│
│00000010│ 02 00 3e 00 01 00 00 00 ┊ fc 4a 40 00 00 00 00 00 │•0>0•000┊×J@00000│
└────────┴─────────────────────────┴─────────────────────────┴────────┴────────┘

$ hd -n32 /bin/ls
00000000  7f 45 4c 46 01 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
00000010  03 00 28 00 01 00 00 00  21 3e 00 00 34 00 00 00  |..(.....!>..4...|
00000020

$ od -Ax -tx1 -N32 /bin/ls
0000000    7f  45  4c  46  01  01  01  00  00  00  00  00  00  00  00  00
0000010    03  00  28  00  01  00  00  00  21  3e  00  00  34  00  00  00
0000020

$ xxd -g1 -l32 /bin/ls
00000000: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00  .ELF............
00000010: 03 00 28 00 01 00 00 00 21 3e 00 00 34 00 00 00  ..(.....!>..4...
HexFiendarrow-up-right
HexPatcharrow-up-right
Hexinatorarrow-up-right
hexxedarrow-up-right
Hiew (Hacker's View)arrow-up-right
HT Editorarrow-up-right
HxDarrow-up-right
ImHexarrow-up-right
Reverse Engineer's Hex Editorarrow-up-right
Synalyze It!arrow-up-right
WinHexarrow-up-right
wxHexEditorarrow-up-right
XVI32arrow-up-right
Edumparrow-up-right
Exeinfo PEarrow-up-right
Malwoverviewarrow-up-right
objdumparrow-up-right
PE-Beararrow-up-right
PEdumparrow-up-right
pestudioarrow-up-right
readelfarrow-up-right
readpearrow-up-right
aquiarrow-up-right
Stud_PEarrow-up-right
PeNetarrow-up-right
PeParserarrow-up-right
pyelftoolsarrow-up-right
tutorial de como compilar um "Hello, world" no Linuxarrow-up-right
Yasm Modular Assembler (YASM)arrow-up-right
HyperDbgarrow-up-right
OllyDbgarrow-up-right
PEDAarrow-up-right
rrarrow-up-right
WinDbgarrow-up-right
x64dbgarrow-up-right

Apêndices

Esses apêndices servem tanto de referência como de material de apoio para estudar assuntos que não foram abordados com profundeza neste livro.

Tabela ASCIIchevron-rightExemplos de Código em Assemblychevron-rightFunções da API do Windowschevron-rightFerramentaschevron-right

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
);

Tabela ISO-8859-1/Latin-1

E possível encontrar versões anteriores desta tabela, mas a mais usada é a seguinte:

    0  1  2  3  4  5  6  7  8  9  A  B  C  D   E  F
0x                                
1x                                
2x     !  "  #  $  %  &  '  (  )  *  +  ,  -   .  /
3x  0  1  2  3  4  5  6  7  8  9  :  ;  <  =   >  ?
4x  @  A  B  C  D  E  F  G  H  I  J  K  L  M   N  O
5x  P  Q  R  S  T  U  V  W  X  Y  Z  [  \  ]   ^  _
6x  `  a  b  c  d  e  f  g  h  i  j  k  l  m   n  o
7x  p  q  r  s  t  u  v  w  x  y  z  {  |  }   ~  
8x                                
9x                                
Ax     ¡  ¢  £  ¤  ¥  ¦  §  ¨  ©  ª  «  ¬  SHY ®  ¯
Bx  °  ±  ²  ³  ´  µ  ¶  ·  ¸  ¹  º  »  ¼  ½   ¾  ¿
Cx  À  Á  Â  Ã  Ä  Å  Æ  Ç  È  É  Ê  Ë  Ì  Í   Î  Ï
Dx  Ð  Ñ  Ò  Ó  Ô  Õ  Ö  ×  Ø  Ù  Ú  Û  Ü  Ý   Þ  ß
Ex  à  á  â  ã  ä  å  æ  ç  è  é  ê  ë  ì  í   î  ï
Fx  ð  ñ  ò  ó  ô  õ  ö  ÷  ø  ù  ú  û  ü  ý   þ  ÿ