サンドボックスは、マルウェアを分析するために一般的に使用されます。一時的で隔離された安全な環境を提供し、疑わしいファイルが悪意のある動作を示すかどうかを観察できます。しかし、マルウェア開発者はサンドボックスや分析環境を回避する手法も開発しています。その一つが、マルウェアが実行されているマシンが実際のユーザーによって操作されているかどうかを確認するチェックを行うことです。そのようなチェックの一つがRAMサイズです。RAMサイズが非現実的に小さい場合(例:1GB)、そのマシンがサンドボックスである可能性があります。マルウェアがサンドボックスを検出すると、実際の悪意のある動作を実行せず、無害なファイルのように見えることがあります。
GetPhysicallyInstalledSystemMemory APIは、SMBIOSファームウェアテーブルからコンピュータに物理的にインストールされているRAMの容量を取得します。このAPIはPULONGLONGパラメータを受け取り、関数が成功するとTRUEを返し、TotalMemoryInKilobytesをゼロ以外の値に設定します。関数が失敗するとFALSEを返します。

GetPhysicallyInstalledSystemMemory関数によって取得された物理メモリの容量は、GlobalMemoryStatusEx関数によって報告された容量以上である必要があります。それより少ない場合、SMBIOSデータが不正な形式であり、関数はERROR_INVALID_DATAで失敗します。不正なSMBIOSデータはユーザーのコンピュータに問題があることを示している可能性があります。

レジスタrcxはパラメータTotalMemoryInKilobytesを保持します。GetPhysicallyInstalledSystemMemoryのジャンプアドレスを上書きするために、次のオペコードを使用します: mov qword ptr ss:[rcx],4193B840。これにより、値4193B840(1.1 TB)がrcxに移動されます。その後、ret命令を使用してリターンアドレスをスタックからポップし、そこにジャンプします。したがって、GetPhysicallyInstalledSystemMemoryが呼び出されるたびに、rcxがカスタム値に設定されます。
