Com o lançamento do Vanguard pro League of Legends, achei interessante trazer essas informações pra vocês e explicar um pouco sobre o funcionamento do código.
Primeira Parte do Código
Nesta seção, o código determina a área da tela a ser capturada. A lógica bifurca com base na existência de uma janela especificada (hWindow):
Se hWindow existir: As dimensões da janela são recuperadas e armazenadas para captura.
Se hWindow não existir: O código captura a tela inteira, obtendo as dimensões através das métricas do sistema (SM_CXVIRTUALSCREEN e SM_CYVIRTUALSCREEN para largura e altura, respectivamente).
Segunda Parte do Código
Este segmento lida com a criação de um bitmap compatível onde a imagem capturada será armazenada temporariamente antes de ser enviada para o servidor da riot. O código utiliza funções como BitBlt para copiar o conteúdo visual da tela ou janela especificada para o bitmap. Este processo inclui:
Criação e seleção de um contexto de dispositivo compatível.
Verificação de sucesso da criação do bitmap e possível tentativa de recuperação em caso de falha (LABEL_45).
Uso da função BitBlt para copiar o conteúdo da tela para o bitmap.
Captura das propriedades do bitmap, incluindo dimensões e profundidade de cor.
É importante estar ciente de que o Vanguard caputra informações da sua tela, incluindo chats privados ou outras informações sensíveis (Cuidado com o discord), as informações são enviadas aos servidores da riot nos EUA.
Créditos
O código foi descoberto durante engenharia reversa do Vanguard, com a colaboração de @JustAReverser e @0xCODEBABE.
A funcionalidade descrita é executada uma vez por jogo.
Abraços!