/** * @file transparency.h * @author Sina Karvandi (sina@hyperdbg.org) * @brief headers for test functions * @details * @version 0.1 * @date 2020-07-30 * * @copyright This project is released under the GNU Public License v3. * */ #pragma once ////////////////////////////////////////////////// // Definitions // ////////////////////////////////////////////////// /** * @brief Number of tests for each instruction sets * @details used to generate test cases for rdts+cpuid+rdtsc * and rdtsc+rdtsc commands */ #define TestCount 1000 ////////////////////////////////////////////////// // Functions // ////////////////////////////////////////////////// void GuassianGenerateRandom(vector Data, UINT64 * AverageOfData, UINT64 * StandardDeviationOfData, UINT64 * MedianOfData); BOOLEAN TransparentModeCheckHypervisorPresence(UINT64 * Average, UINT64 * StandardDeviation, UINT64 * Median); BOOLEAN TransparentModeCheckRdtscpVmexit(UINT64 * Average, UINT64 * StandardDeviation, UINT64 * Median); double Randn(double mu, double sigma); double Median(vector Cases); unsigned long long TransparentModeRdtscDiffVmexit(); unsigned long long TransparentModeRdtscVmexitTracing();