using System.Collections.Generic; using System.Text.Json.Serialization; namespace CheatScanner.Models; public class CheatDatabase { [JsonPropertyName("version")] public string Version { get; set; } = ""; [JsonPropertyName("rules")] public List Rules { get; set; } = new(); } public class CheatRule { [JsonPropertyName("id")] public string Id { get; set; } = ""; [JsonPropertyName("enabled")] public bool Enabled { get; set; } = true; [JsonPropertyName("name")] public string Name { get; set; } = ""; [JsonPropertyName("severity")] public string Severity { get; set; } = "WARNING"; [JsonPropertyName("description")] public string Description { get; set; } = ""; [JsonPropertyName("match")] public CheatMatch Match { get; set; } = new(); } public class CheatMatch { /// DLL or EXE module name loaded in any process (substring match) [JsonPropertyName("process_module")] public string? ProcessModule { get; set; } /// Running process name (substring match, no .exe needed) [JsonPropertyName("process_name")] public string? ProcessName { get; set; } /// Exact file or directory path — supports %ENV% variables [JsonPropertyName("file_path")] public string? FilePath { get; set; } /// Registry key path (HKCU\... or HKLM\...) [JsonPropertyName("registry_key")] public string? RegistryKey { get; set; } /// Registry value name within the key (optional — key existence is enough if omitted) [JsonPropertyName("registry_value")] public string? RegistryValue { get; set; } }