diff options
Diffstat (limited to 'runtime/VMProtect.Runtime/Faces.cs')
-rw-r--r-- | runtime/VMProtect.Runtime/Faces.cs | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/runtime/VMProtect.Runtime/Faces.cs b/runtime/VMProtect.Runtime/Faces.cs new file mode 100644 index 0000000..c3818e5 --- /dev/null +++ b/runtime/VMProtect.Runtime/Faces.cs @@ -0,0 +1,170 @@ +using System; + +// ReSharper disable once CheckNamespace +// ReSharper disable InconsistentNaming +namespace VMProtect +{ + [AttributeUsage(AttributeTargets.Enum)] + public sealed class DeleteOnCompilation : Attribute { } + + [VMProtect.DeleteOnCompilation] + public enum Variables : uint + { + IS_PATCH_DETECTED, + IS_DEBUGGER_DETECTED, + LOADER_CRC_INFO, + LOADER_CRC_INFO_SIZE, + LOADER_CRC_INFO_HASH, + SESSION_KEY, + DRIVER_UNLOAD, + CRC_IMAGE_SIZE, + LOADER_STATUS, + SERVER_DATE, + RESERVED, + CPU_COUNT, + CPU_HASH, + COUNT = CPU_HASH + 32 + } + + [VMProtect.DeleteOnCompilation] + public enum Faces : uint + { + MASK = 0xFACE0000U, + + RC5_P, + RC5_Q, + + STRING_INFO, + RESOURCE_INFO, + STORAGE_INFO, + REGISTRY_INFO, + LICENSE_INFO, + LICENSE_INFO_SIZE, + KEY_INFO, + RUNTIME_ENTRY, + CRC_INFO_SALT, + CRC_TABLE_ENTRY, + CRC_TABLE_SIZE, + CRC_TABLE_HASH, + TRIAL_HWID, + TRIAL_HWID_SIZE, + CORE_OPTIONS, + IMAGE_BASE, + FILE_BASE, + + NTOSKRNL_NAME, + HAL_NAME, + USER32_NAME, + MESSAGE_BOX_NAME, + KERNEL32_NAME, + CREATE_FILE_NAME, + CLOSE_HANDLE_NAME, + INITIALIZATION_ERROR, + PROC_NOT_FOUND, + ORDINAL_NOT_FOUND, + STRING_DECRYPT_KEY, + DRIVER_FORMAT_VALUE, + FILE_CORRUPTED, + LOADER_OPTIONS, + LOADER_DATA, + DEBUGGER_FOUND, + NT_SET_INFORMATION_PROCESS_NAME, + NT_RAISE_HARD_ERROR_NAME, + IS_WOW64_PROCESS_NAME, + WINE_GET_VERSION_NAME, + MACOSX_FORMAT_VALUE, + GNU_PTRACE, + UNREGISTERED_VERSION, + WTSAPI32_NAME, + WTS_SEND_MESSAGE_NAME, + NTDLL_NAME, + NT_QUERY_INFORMATION_NAME, + NT_SET_INFORMATION_THREAD_NAME, + SICE_NAME, + SIWVID_NAME, + NTICE_NAME, + ICEEXT_NAME, + SYSER_NAME, + VIRTUAL_MACHINE_FOUND, + SBIEDLL_NAME, + QUERY_VIRTUAL_MEMORY_NAME, + ENUM_SYSTEM_FIRMWARE_NAME, + GET_SYSTEM_FIRMWARE_NAME, + NT_QUERY_INFORMATION_PROCESS_NAME, + NT_VIRTUAL_PROTECT_NAME, + NT_OPEN_FILE_NAME, + NT_CREATE_SECTION_NAME, + NT_OPEN_SECTION_NAME, + NT_MAP_VIEW_OF_SECTION, + NT_UNMAP_VIEW_OF_SECTION, + NT_CLOSE, + SYSCALL, + NT_ALLOCATE_VIRTUAL_MEMORY_NAME, + NT_FREE_VIRTUAL_MEMORY_NAME, + + PACKER_INFO = 0xFACE0100U, + PACKER_INFO_SIZE, + FILE_CRC_INFO, + FILE_CRC_INFO_SIZE, + LOADER_CRC_INFO, + LOADER_CRC_INFO_SIZE, + SECTION_INFO, + SECTION_INFO_SIZE, + FIXUP_INFO, + FIXUP_INFO_SIZE, + RELOCATION_INFO, + RELOCATION_INFO_SIZE, + IAT_INFO, + IAT_INFO_SIZE, + IMPORT_INFO, + IMPORT_INFO_SIZE, + INTERNAL_IMPORT_INFO, + INTERNAL_IMPORT_INFO_SIZE, + MEMORY_CRC_INFO, + MEMORY_CRC_INFO_SIZE, + DELAY_IMPORT_INFO, + DELAY_IMPORT_INFO_SIZE, + LOADER_CRC_INFO_HASH, + MEMORY_CRC_INFO_HASH, + TLS_INDEX_INFO, + + VAR = 0xFACE0200U, + VAR_IS_PATCH_DETECTED = VAR | (Variables.IS_PATCH_DETECTED << 4), + VAR_IS_DEBUGGER_DETECTED = VAR | (Variables.IS_DEBUGGER_DETECTED << 4), + VAR_LOADER_CRC_INFO = VAR | (Variables.LOADER_CRC_INFO << 4), + VAR_LOADER_CRC_INFO_SIZE = VAR | (Variables.LOADER_CRC_INFO_SIZE << 4), + VAR_LOADER_CRC_INFO_HASH = VAR | (Variables.LOADER_CRC_INFO_HASH << 4), + VAR_SESSION_KEY = VAR | (Variables.SESSION_KEY << 4), + VAR_LOADER_STATUS = VAR | (Variables.LOADER_STATUS << 4), + VAR_SERVER_DATE = VAR | (Variables.SERVER_DATE << 4), + + VAR_SALT = 0xFACE0300U, + VAR_IS_PATCH_DETECTED_SALT = VAR_SALT | Variables.IS_PATCH_DETECTED, + VAR_IS_DEBUGGER_DETECTED_SALT = VAR_SALT | Variables.IS_DEBUGGER_DETECTED, + VAR_LOADER_CRC_INFO_SALT = VAR_SALT | Variables.LOADER_CRC_INFO, + VAR_LOADER_CRC_INFO_SIZE_SALT = VAR_SALT | Variables.LOADER_CRC_INFO_SIZE, + VAR_LOADER_CRC_INFO_HASH_SALT = VAR_SALT | Variables.LOADER_CRC_INFO_HASH, + VAR_SERVER_DATE_SALT = VAR_SALT | Variables.SERVER_DATE, + } + + public static class GlobalData + { + private static uint[] _v = new uint[(uint)Variables.COUNT]; + public static bool IsPatchDetected() { return (_v[(uint)Faces.VAR_IS_PATCH_DETECTED] ^ (uint)Faces.VAR_IS_PATCH_DETECTED_SALT) != 0; } + public static bool IsDebuggerDetected() { return (_v[(uint)Faces.VAR_IS_DEBUGGER_DETECTED] ^ (uint)Faces.VAR_IS_DEBUGGER_DETECTED_SALT) != 0; } + public static uint LoaderCrcInfo() { return _v[(uint)Faces.VAR_LOADER_CRC_INFO] ^ (uint)Faces.VAR_LOADER_CRC_INFO_SALT; } + public static uint LoaderCrcSize() { return _v[(uint)Faces.VAR_LOADER_CRC_INFO_SIZE] ^ (uint)Faces.VAR_LOADER_CRC_INFO_SIZE_SALT; } + public static uint LoaderCrcHash() { return _v[(uint)Faces.VAR_LOADER_CRC_INFO_HASH] ^ (uint)Faces.VAR_LOADER_CRC_INFO_HASH_SALT; } + public static uint SessionKey() { return _v[(uint)Faces.VAR_SESSION_KEY]; } + public static uint LoaderStatus() { return _v[(uint)Faces.VAR_LOADER_STATUS]; } + public static uint ServerDate() { return _v[(uint)Faces.VAR_SERVER_DATE] ^ (uint)Faces.VAR_SERVER_DATE_SALT; } + public static void SetIsPatchDetected(bool value) { _v[(uint)Faces.VAR_IS_PATCH_DETECTED] = (uint)(value ? 1 : 0) ^ (uint)Faces.VAR_IS_PATCH_DETECTED_SALT; } + public static void SetIsDebuggerDetected(bool value) { _v[(uint)Faces.VAR_IS_DEBUGGER_DETECTED] = (uint)(value ? 1 : 0) ^ (uint)Faces.VAR_IS_DEBUGGER_DETECTED_SALT; } + public static void SetLoaderCrcInfo(uint value) { _v[(uint)Faces.VAR_LOADER_CRC_INFO] = value ^ (uint)Faces.VAR_LOADER_CRC_INFO_SALT; } + public static void SetLoaderCrcSize(uint value) { _v[(uint)Faces.VAR_LOADER_CRC_INFO_SIZE] = value ^ (uint)Faces.VAR_LOADER_CRC_INFO_SIZE_SALT; } + public static void SetLoaderCrcHash(uint value) { _v[(uint)Faces.VAR_LOADER_CRC_INFO_HASH] = value ^ (uint)Faces.VAR_LOADER_CRC_INFO_HASH_SALT; } + public static void SetSessionKey(uint value) { _v[(uint)Faces.VAR_SESSION_KEY] = value; } + public static void SetLoaderStatus(uint value) { _v[(uint)Faces.VAR_LOADER_STATUS] = value; } + public static void SetServerDate(uint value) { _v[(uint)Faces.VAR_SERVER_DATE] = value ^ (uint)Faces.VAR_SERVER_DATE_SALT; } + } +}
\ No newline at end of file |