8 pontos por GN⁺ 2025-04-22 | 1 comentários | Compartilhar no WhatsApp
  • O TikTok usa uma máquina virtual (VM) para reforçar a camada de segurança e ofuscação
  • Este projeto faz engenharia reversa dessa máquina virtual (VM) baseada na web para analisar como funcionam o bypass de segurança e a geração de assinaturas de requisição
  • O alvo principal é webmssdk.js, que contém o código da VM envolvido na geração de X-Bogus e _signature
  • O projeto desfaz a ofuscação do JavaScript e analisa e decompila o bytecode da VM do TikTok para restaurá-lo até um nível significativo de funções
  • Com isso, torna-se possível até gerar a _signature necessária em requisições que exigem autenticação, como publicar comentários
  • A VM é projetada de forma sofisticada e possui estruturas avançadas de bytecode, como loops, tratamento de exceções e gerenciamento de escopo

Visão geral do projeto de engenharia reversa da VM do TikTok

  • O TikTok usa uma máquina virtual (VM) ofuscada baseada em JavaScript para gerar assinaturas de requisições do cliente, proteger dados e impedir bypass de segurança
  • Este projeto tem como objetivo restaurar os algoritmos de assinatura (X-Bogus, _signature) por meio da desofuscação e decompilação do arquivo webmssdk.js

Análise dos principais recursos e da estrutura

Desofuscação

  • O TikTok ofusca strings indexando-as com arrays e notação de colchetes

    r[Gb[301]](Gb[57], e)  
    
  • A descriptografia do array Gb é tratada por substituição usando uma tabela fixa de strings

  • Depois de decodificar todos esses padrões, eles são convertidos para a notação de ponto (dot notation), mais legível

Remoção da ofuscação de chamadas de função

  • As funções são armazenadas no array Ab e chamadas por índice

    Ab[31](args) → Ab31(args)  
    
  • Um parser de AST é usado para separar isso em funções individuais, nomeá-las e também ajustar a forma de chamada

Descriptografia do bytecode

  • O bytecode é montado de forma complexa com criptografia base64 + gzip + leb128 + XOR

    r = cálculo da chave XOR  
    descompressão e decodificação leb128 para reconstruir o conjunto de instruções  
    
  • Cada função é baseada em bytecode, e sua estrutura é restaurada por meio do processo de decompilação

Características da VM do TikTok

  • É mais avançada que uma VM comum, com funções aninhadas, gerenciamento de escopo, tratamento de exceções e desvios condicionais
  • Cada instrução é disfarçada em uma estrutura if-else em vez de switch → isso é restaurado para a forma de switch case

Decompilação e depuração

  • Cada função de bytecode é decompilada até o nível de uma função JS normal e salva no formato VMxxx.js
  • Exemplo: VM223 é um gerador de caracteres aleatórios
  • A depuração é feita substituindo o JS original pelos arquivos decompilados usando a extensão Tampermonkey + bypass de CSP no Chrome

Análise de assinatura (Signing)

Estrutura dos headers de requisição

  • Três headers adicionais são incluídos nas requisições ao servidor
    • msToken : emitido pelo servidor, regenerado a cada requisição
    • X-Bogus : gerado no webmssdk.js com base na requisição
    • _signature : usado em requisições que exigem autenticação, gerado por webmssdk.js
  • Requisições comuns de consulta de usuário precisam apenas de X-Bogus
  • Requisições autenticadas, como publicar comentários, também precisam de _signature

Fluxo das funções da VM

  • VM86: ponto de entrada de toda a geração de assinatura
  • VM113: geração de X-Bogus
  • VM189: geração de _signature
  • É possível assinar URLs reproduzindo esse fluxo com signer.js

Mecanismos adicionais de proteção

  • Rastreamento do mouse: VM120
  • Verificação de ambiente: VM265
  • Porém, tudo isso é proteção do lado do cliente e não envolve comunicação com o servidor → pode ser ignorado para a geração de assinaturas

Observações e manutenção

  • A VM do TikTok é atualizada continuamente → se a estrutura mudar, será necessária uma nova decompilação
  • Este projeto é mais adequado para análise de segurança, pesquisa sobre tecnologias anti-bot e fins educacionais

1 comentários

 
GN⁺ 2025-04-22
Comentários do Hacker News
  • Eu uso um site de streaming que trava com frequência e mostra mensagens de erro. Estou analisando o código JavaScript para encontrar uma solução, e um assistente de IA foi de grande ajuda para entender o código ofuscado

    • Com IA, é possível reescrever funções JavaScript difíceis de entender de uma forma mais legível e adicionar comentários
    • A IA ajuda a inferir nomes de variáveis ou funções, o que facilita entender o comportamento do código em alto nível
    • Recomendo fortemente usar agentes de IA como ferramenta para quem faz trabalhos parecidos
  • É possível substituir os arquivos JavaScript executados na web por versões desofuscadas e usar o TikTok normalmente

    • Com Tampermonkey e uma extensão de CSP, é possível carregar os arquivos a partir de uma origem bloqueada
    • Usando o Local Overrides do Chrome DevTools, dá para obter o mesmo efeito sem extensões de terceiros
  • Parece que estão se esforçando muito para esconder o código. Isso pode atrapalhar a otimização do programa, aumentar a complexidade e acabar gerando mais erros

    • Entendo a intenção de bloquear bots, mas é preciso um método mais eficaz
    • Não dá para impedir clones, e eles podem observar como funciona e fazer engenharia reversa em estilo caixa-preta
  • Encontrei nos meus favoritos um exemplo de engenharia reversa da VM do TikTok

  • Sempre gosto de ler textos sobre esforços de engenharia reversa, e este artigo foi fácil de acompanhar

    • Muitos sites e serviços de proteção contra bots usam por padrão verificação de ambiente e rastreamento de movimento do mouse
    • Depois que essas medidas são neutralizadas, é sempre interessante ver quanto tempo o serviço leva para mudar o mecanismo
  • Não existe motivo legítimo para uma plataforma de rede social usar esse nível de ofuscação

  • Pergunta sobre o que é uma VM

    • Já tive experiência usando VMs para montar ambientes de teste em diferentes sistemas operacionais
    • Uma JavaScript Virtual Machine funciona como seu próprio sistema operacional sobre o SO hospedeiro
    • A VM discutida no TFA não é esse tipo de VM
    • Recentemente, "VM" vem sendo usado em vários contextos, o que é confuso
  • Pergunta se é uma VM relacionada ao Lynx

  • Pergunta se também existe uma VM no app para iOS

    • Acho que uma VM iria contra as políticas da Apple
  • Trabalhei por um tempo com bots para TikTok, e foi muito difícil