
Driver de Diagnóstico Lenovo EoP - Leitura/Escrita Arbitrária
O controle de acesso incorreto para o driver de diagnóstico da Lenovo permite que um usuário com privilégios reduzidos emita IOCTLs de dispositivo para realizar leitura/escrita arbitrária de memória física/virtual.
Agradecimentos ao ch3rn0byl por ajudar com isso (e eu 100% roubei duas funções dele).
IOCTL 0x222000:
IOCTL 0x222008/0x22200C:
IOCTL 0x222010:
IOCTL 0x222014:
Escrita via MmMapIoSpace
Este IOCTL copia um valor de um ponteiro fornecido no buffer de entrada para a memória física mapeada
Para resolver MmPteBase e outros pré-requisitos, um espaço físico de "swap" é encontrado pesquisando o intervalo de memória física 0x1000 - 0x10000 por 8 bytes zero.
Uma vez que esse espaço é encontrado, a memória virtual é copiada para esse espaço de swap via IOCTL 0x222014 e lida de volta usando IOCTL 0x222010.
Atualmente, TODAS as leituras virtuais são feitas usando esse espaço de "swap".
É a melhor maneira de fazer r/w virtual? Provavelmente não.
Funciona? Sim.
Ah, e também, cuidado com seus próprios offsets — isso foi testado no Windows 11 21H2 com HVCI desabilitado.