
Ferramenta em C++ que modifica chamadas de API do Windows para contornar verificações de tamanho de RAM em sandboxes, permitindo que malwares evitem detecção em ambientes de análise isolados.
Sandboxes são comumente usados para analisar malware. Eles fornecem um ambiente temporário, isolado e seguro no qual é possível observar se um arquivo suspeito exibe algum comportamento malicioso. No entanto, desenvolvedores de malware também desenvolveram métodos para evadir sandboxes e ambientes de análise. Um desses métodos é realizar verificações para determinar se a máquina na qual o malware está sendo executado está sendo operada por um usuário real. Uma dessas verificações é o tamanho da RAM. Se o tamanho da RAM for irrealisticamente pequeno (por exemplo, 1 GB), pode indicar que a máquina é uma sandbox. Se o malware detectar uma sandbox, ele não executará seu verdadeiro comportamento malicioso e pode parecer um arquivo benigno.
A API GetPhysicallyInstalledSystemMemory recupera a quantidade de RAM que está fisicamente instalada no computador a partir das tabelas de firmware SMBIOS. Ela recebe um parâmetro PULONGLONG e retorna TRUE se a função for bem-sucedida, definindo TotalMemoryInKilobytes para um valor diferente de zero. Se a função falhar, ela retorna FALSE.

A quantidade de memória física recuperada pela função GetPhysicallyInstalledSystemMemory deve ser igual ou maior que a quantidade relatada pela função GlobalMemoryStatusEx; se for menor, os dados SMBIOS estão malformados e a função falha com ERROR_INVALID_DATA. Dados SMBIOS malformados podem indicar um problema no computador do usuário.

O registrador rcx mantém o parâmetro TotalMemoryInKilobytes. Para sobrescrever o endereço de salto de GetPhysicallyInstalledSystemMemory, uso os seguintes opcodes: mov qword ptr ss:[rcx],4193B840. Isso move o valor 4193B840 (ou 1.1 TB) para rcx. Em seguida, a instrução ret é usada para remover o endereço de retorno da pilha e pular para ele. Portanto, sempre que GetPhysicallyInstalledSystemMemory for chamada, ela definirá rcx para o valor personalizado.
