Quais identificadores de hardware são lidos de verdade
Seriais da placa-mãe e dos discos, UUID do SMBIOS, endereços MAC, TPM, UUID da GPU, IDs de volume e o MachineGuid do registro: onde cada um vive e o que um spoofer em nível de kernel consegue e não consegue trocar.
Resposta curta
Os programas leem um conjunto correlacionado, e não um HWID único: seriais da placa-mãe e dos discos, UUID do SMBIOS, endereços MAC, estado do TPM, UUID da GPU, IDs de volume e o MachineGuid. Um spoofer em nível de kernel consegue mudar o que o Windows informa para a maioria deles, mas não os valores guardados em firmware assinado.
Nesta página10
- Existe um HWID único?
- Onde vive cada identificador e dá para spoofar?
- O que um spoofer em nível de kernel muda?
- O que um spoofer em nível de kernel não consegue mudar?
- Por que valores incoerentes chamam atenção?
- Um identificador esquecido pode anular o resto?
- O que identifica você além do hardware?
- Vale editar esses valores por conta própria?
- Perguntas comuns sobre identificadores de hardware
- Fontes
Existe um HWID único?
Não. HWID é um atalho conveniente para algo que não existe como valor único. O que existe é um conjunto de identificadores, cada um lido por um caminho diferente e cada um com origem e vida útil próprias. Um programa que quer reconhecer uma máquina lê vários deles e guarda a combinação, muitas vezes com tudo junto em um hash. É esse desenho que torna as trocas parciais tão fracas: os valores que sobram normalmente bastam para bater com o conjunto.
Onde vive cada identificador e dá para spoofar?
Na última coluna, spoofabilidade significa o que uma ferramenta em nível de kernel consegue mudar naquilo que o sistema operacional informa. Nunca significa que o valor físico dentro de um chip foi reescrito.
| Identificador | Onde vive | Lido por | Spoofabilidade típica |
|---|---|---|---|
| Serial da placa-mãe | Tabelas SMBIOS no firmware da placa | Win32_BaseBoard | O valor informado costuma ser trocado no nível do sistema operacional. O valor gravado no firmware, não |
| UUID do sistema | Informações de sistema do SMBIOS, definidas na fabricação | Win32_ComputerSystemProduct | Costuma ser trocado no nível do sistema operacional. É muito lido, então entra no conjunto com frequência |
| Serial e versão da BIOS | Firmware da placa | Win32_BIOS | O valor informado costuma ser trocado; um valor incoerente com o modelo da placa já é um sinal por si só |
| Números de série dos discos | O firmware da própria unidade, devolvido pelo comando identify de SATA ou NVMe | Win32_DiskDrive, APIs de armazenamento | O valor informado pelo sistema costuma ser trocado. A unidade continua sabendo o serial real dela |
| Serial e GUID do volume | Metadados do sistema de arquivos na partição, criados na formatação | vol, Get-Volume, APIs de volume | Muda em uma formatação e costuma ser regerado. Fácil de ler, então fácil de correlacionar se for esquecido |
| Endereços MAC | A EEPROM do adaptador de rede, com uma camada de substituição do sistema operacional por cima | getmac, Win32_NetworkAdapter | O endereço informado costuma ser trocado. O endereço gravado de fábrica continua no adaptador |
| Identidade e chaves de atestação do TPM | O chip TPM, com chaves certificadas pelo fabricante | Win32_Tpm, APIs de atestação de plataforma | Não são falsificáveis. Uma chave assinada pelo fabricante não pode ser inventada por software, embora o estado do TPM possa ser limpo ou o dispositivo desativado, cada um com as próprias consequências |
| UUID da GPU | O firmware da própria placa de vídeo, exposto pelo driver do fabricante | Ferramentas e APIs do driver do fabricante | Em geral não é trocado por um spoofer no nível do sistema operacional. É lido pelo driver do fabricante, e não pelo SMBIOS |
| MachineGuid do registro | Um valor de registro criado quando o Windows é instalado | A chave Cryptography em HKLM | Valor puramente do sistema operacional: muda em uma instalação limpa e costuma ser regerado |
| Identificadores de instalação e de produto do Windows | Registro, gravados durante a instalação e a ativação | Registro e APIs de licenciamento | Valores do sistema operacional, zerados por uma instalação limpa |
| Identificação da CPU | O próprio processador | CPUID | Informa um modelo, e não um serial por unidade nas peças de consumo, então é um identificador fraco e raramente o decisivo |
| Serial do monitor no EDID | O firmware do próprio monitor | APIs de vídeo e a chave de monitores no registro | Não é um identificador de máquina em si, mas é legível e não sai do lugar quando você troca peças do PC |
A tabela mostra onde os valores vivem e como são lidos. Não é uma lista de coisas para editar, como explica o aviso sobre edição manual.
O que um spoofer em nível de kernel muda?
Uma ferramenta em nível de kernel fica abaixo das APIs que os programas normais usam. Quando um cliente pede ao Windows o serial de um disco ou de uma placa, a resposta que ele recebe é a que a ferramenta forneceu. Isso é genuinamente poderoso, porque quase tudo que lê identificadores lê por esses caminhos. Mas é também tudo que está acontecendo: a ferramenta muda uma resposta, não um chip.
O que um spoofer em nível de kernel não consegue mudar?
Três tipos de valor resistem a ele. O primeiro é tudo que está guardado em firmware assinado, principalmente o que um TPM certifica. Esses valores não podem ser falsificados, porque a assinatura vem de uma chave que a ferramenta não tem. O segundo são os valores lidos por um caminho que a ferramenta não cobre, então um identificador de GPU buscado pelo driver do fabricante volta inalterado. O terceiro são os valores físicos, que continuam físicos. A unidade continua sabendo o serial dela, e o adaptador de rede continua sabendo o endereço gravado de fábrica, informe o Windows o que informar por cima. Uma ferramenta que afirma o contrário está descrevendo marketing, não mecanismo.
Info
Por que valores incoerentes chamam atenção?
Um conjunto de identificadores que não combina entre si é mais distintivo do que os originais eram. Pense em um serial de placa de notebook em um chipset de desktop, ou em um serial de disco em um formato que aquele fabricante nunca usou. Um modelo de placa que não existe, ou valores que mudam a cada leitura, chamam atenção do mesmo jeito. Cada um deles é um padrão por si só, e é por isso que valores aleatórios não são a mesma coisa que valores seguros. É também por isso que a escolha de valores plausíveis pela ferramenta importa mais do que o número de campos que ela toca.
Um identificador esquecido pode anular o resto?
Se o conjunto registrado tinha oito valores e sete deles agora aparecem diferentes, o oitavo ainda pode bater com o registro antigo. Se vai bater depende de como a fabricante correlaciona os valores, o que não é publicado, então parta do princípio de que o elo mais fraco decide o desfecho. Esse é o argumento prático para verificar cada valor que você consegue ler, em vez de confiar em uma tela de resumo.
O que identifica você além do hardware?
As pessoas compram uma ferramenta de hardware esperando que ela dê conta disso, mas ela não dá, e nenhuma outra ferramenta local dá.
- A própria conta e tudo que a plataforma registrou contra ela
- O e-mail e o telefone ligados a essa conta
- A forma de pagamento usada para comprar o jogo ou o saldo da plataforma
- O seu endereço IP, o seu provedor e a rede em que você joga
- Como você joga: trajetórias de mira, tempos, desvios estatísticos, volume de denúncias
- A lista de amigos e com quem você entra na fila
- Tudo que você conta sobre si mesmo em um canal público
Atenção
Vale editar esses valores por conta própria?
Não. Não edite esses valores na mão, nem no registro nem no firmware de uma placa. Editar à mão arrisca uma máquina que não liga, uma ativação perdida e uma disputa de garantia. Também pode deixar o conjunto de identificadores tão incoerente que ele chama mais atenção do que o original chamava. Se você quer ver o que a sua máquina informa, o guia de verificação lista comandos que só leem. Alterar é tarefa da ferramenta, e só uma ferramenta feita para isso deve fazer.
Perguntas comuns sobre identificadores de hardware
Qual identificador os anticheats usam de verdade?
Isso não é publicado, varia de fabricante para fabricante e muda com o tempo. Tudo que circula sobre pesos específicos é dedução da comunidade, então planeje para o conjunto inteiro, e não para um valor só.
Trocar o disco resolve um ban de hardware?
Não de forma confiável. Se o conjunto registrado incluía valores da placa, UUID, MAC ou TPM, um disco novo troca um elemento e deixa o resto batendo.
Uma instalação limpa do Windows muda o meu HWID?
Ela muda valores do sistema operacional, como o MachineGuid, os identificadores de instalação e os seriais de volume, mas não toca em nada que esteja no firmware. Sozinha, não é uma troca de identidade de hardware.
O TPM é um problema?
É o elemento mais difícil de tratar com honestidade, porque as chaves dele são certificadas pelo fabricante e não podem ser falsificadas. O que dá para fazer com o estado do TPM depende da sua placa e da sua ferramenta, mas quem afirma que falsifica uma atestação está exagerando.
Trocar o endereço MAC importa se eu uso Wi-Fi?
Todo adaptador, com fio ou sem fio, tem endereço próprio, e qualquer um deles pode ser lido. Confira todos os adaptadores em vez de supor que só o que você usa para conectar está visível.
Fontes
Fora o serial do EDID, a tabela é trabalho de bancada: o time leu esses valores nas próprias máquinas. Nenhuma fabricante publica quais deles um anticheat usa.
- 01VESA E-EDID standard, release A2
o número de série que um monitor carrega nos próprios dados EDID
glenwing.github.io
Leia em seguida
Ainda travado? Abra um ticket no Discord
Todos os guias