API 参考
OZero SDK 中所有公共类和方法的完整参考。除非另有说明,所有类都位于 OZeroSDK.Security 命名空间中。
OZeroSecurityManager OZeroSDK.Security
管理所有活动安全模块的中央单例。即使通过 DontDestroyOnLoad 切换场景,它也会被保留。使用静态 Instance 属性访问它。 OZeroBootstrapper 由 [RuntimeInitializeOnLoadMethod] 在运行时启动时自动创建 - 不要自己实例化它。
特性
| 姓名 | 类型 | 解释 |
|---|---|---|
| Instance | OZeroSecurityManager | 静态单例访问器。返回活动实例。 |
方法
在用户链中注册第三方回调。内置的默认处理程序在单独的链中运行,因此当用户回调被释放时它不会被禁用。回调接收OZeroSecurityEvent,其中包含模块类型、公共Abort Code、消息密钥、安全诊断消息以及是否根据当前策略终止应用程序。
删除先前注册的用户回调。请务必从 OnDisable 或 OnDestroy 调用它,以避免内存泄漏。
代表
这是 RegisterUserCallback 使用的回调签名。在决定是否处理您自己的 UI、日志和存储时,请阅读 evt.Type、evt.AbortCodeHex、evt.MessageKey、evt.Message 和 evt.WillAbort。
例子
using OZeroSDK.Security;
using UnityEngine;
public class MySecurityListener : MonoBehaviour
{
void OnEnable()
=> OZeroSecurityManager.Instance.RegisterUserCallback(OnThreat);
void OnDisable()
=> OZeroSecurityManager.Instance.UnregisterUserCallback(OnThreat);
void OnThreat(OZeroSecurityEvent evt)
=> Debug.Log(
$"Threat={evt.Type}, Code={evt.AbortCodeHex}, Message={evt.Message}");
}
OZeroSecurityEvent class
客户披露的违规事件负载已发送至 RegisterUserCallback。我们只公开可靠且安全的诊断信息,而不是内部检测详细信息。
| 姓名 | 类型 | 解释 |
|---|---|---|
| Type | ModulationType | 导致违规的安全模块。 |
| AbortCode | OZeroAbortCode | 这是一个稳定的公共Abort Code类别。 |
| AbortCodeValue | int | 这是一个非常适合在服务器日志中使用的数字代码值。 |
| AbortCodeHex | string | 十六进制字符串,如 0x0C。 |
| MessageKey | string | 这是一个稳定的英文消息密钥,可用于本地化和分析分组。 |
| Message | string | 这是可以向客户公开的安全英文诊断消息。 |
| WillAbort | bool | 如果当前响应策略是在回调返回后或宽限计时器到期后终止应用程序,则为 true。 |
ModulationType enum
确定哪个安全模块发出了警报。传递给 OZeroSecurityEvent.Type。
| 价值 | 解释 |
|---|---|
| MemoryModulation | 以可疑方式访问的安全类型变量 |
| SpeedHack | 检测到速度黑客或时间操纵 |
| TimeHack | 检测系统时钟异常(返回、NTP 不匹配) |
| Injection | 检测内存注入工具(Frida等)或非法DLL |
| PhysicsHack | 不可能的位置变化检测(由 OZeroPhysicsHackDetector 引起 - 需要将组件直接附加到单个玩家对象;不是由 Bootstrapper 自动生成) |
| DeviceBindingModulation | 保存数据是从与其绑定的设备不同的设备加载的 |
| InstallSource | 从非授权商店安装 |
| BuildIntegrity | 程序集哈希不匹配、调试器附件或平台检查失败 |
| EnvironmentModulation | 检测模拟器或异常运行环境 |
| SteamAntiPiracy | 当 Steam 所有权或票证验证失败时发生。 |
OZeroBootstrapper OZeroSDK.Security
这是一个自动引导入口点,不需要额外的接线。您不需要直接调用此类。将 SDK 连接到您的 Unity 启动流程,加载经过验证的安全设置,并在游戏开始前自动准备活动探测器。本机运行时保护(如果可用)也会在此过程中初始化。
OZeroSecurityConfig 资产。
OZeroSecurityConfigRuntime OZeroSDK.Security
具有受保护的构建时安全设置的运行时加载程序。验证打包的设置,准备内存中 OZeroSecurityConfig 快照,并在验证失败时应用已建立的威胁响应策略。
特性
| 姓名 | 类型 | 解释 |
|---|---|---|
| Current | OZeroSecurityConfig | 斑点中水合设置的快照。首次访问时调用 EnsureLoaded()。在玩家构建中,OZeroSecurityConfig.Instance 通过此属性进行代理。 |
方法
幂等加载器——可以安全地重复调用。包配置在第一次访问时验证并加载,后续调用重用相同的快照。故障处理遵循全球威胁响应策略。
OZeroSecurityConfig 和 Unity 编辑器窗口中查看支持的互锁表面。
OZero Secure Variables OZeroSDK.Security
它是基本类型的加密替代品。值仅在 Native C++ 堆上存储和加密。每个帧都会应用一个额外的 48 字节 XOR 掩码,因此内存扫描器只能看到噪声。支持所有算术运算符和隐式转换 - 只需更改类型名称即可。
支撑类型
| 班级 | 另类类型 |
|---|---|
| OZeroSV_Int | int |
| OZeroSV_Int64 | long |
| OZeroSV_UInt | uint |
| OZeroSV_UInt64 | ulong |
| OZeroSV_Short | short |
| OZeroSV_UShort | ushort |
| OZeroSV_Byte | byte |
| OZeroSV_Float | float |
| OZeroSV_Double | double |
| OZeroSV_Decimal | decimal |
| OZeroSV_Bool | bool |
| OZeroSV_String | string |
| OZeroSV_Vector2 | Vector2 |
| OZeroSV_Vector3 | Vector3 |
| OZeroSV_Buffer | byte[] |
支持的运营商
数字类型(Int、Int64、UInt、UInt64、Short、UShort、Byte、Float、Double、Decimal)用于算术(+ - * / %)、比较(== != <) >) 支持 <= >=)、复合赋值 (+= -= *= /=)、递增/递减 (++ --) 运算符以及基本类型的隐式转换。 Vector2·Vector3支持算术和等式运算符,而Bool仅支持等式运算符。字符串支持 ==、!=、+。 Buffer可以通过索引操作符直接访问字节数组。
stackalloc 和本机原子计数器执行的,即使对于每帧调用数千次的热传递也是安全的。
OZeroSafePlayerPrefs OZeroSDK.Security
Unity PlayerPrefs 的加密替代品。密钥名称通过消息认证进行哈希处理,值使用密钥派生功能Device Binding密钥进行加密(重复 100,000 次)。即使直接打开设备注册表(Windows)或设置plist(iOS)也无法读取保存的数据。
方法
所有方法在功能上等同于 PlayerPrefs。无需迁移步骤 - 只需替换类名称。
OZeroSafePlayerPrefs 写入的数据与标准 PlayerPrefs 不兼容。在两者之间切换将使现有数据无法读取。
OZeroSV_File OZeroSDK.Security
使用内置完整性验证来加密和解密文件。关键是应用程序级别(无Device Binding),因此它与 Steam 云保存兼容。首先在读取时执行完整性验证,被篡改的文件会引发异常,而不是自动返回损坏的数据。
方法
加密contents并将结果(标头+密文+认证标签)写入path。该目录必须已经存在。
读取 path 中的文件,验证其完整性,并返回解密的字符串。如果文件已被篡改,则引发 InvalidDataException。
加密原始字节数组并将其写入 path。
读取并解密 WriteAllBytes 写入的文件。返回前验证标签的完整性。
示例代码
using OZeroSDK.Security;
string path = Application.persistentDataPath + "/save.json";
string json = JsonUtility.ToJson(saveData);
// Write (encrypts automatically)
OZeroSV_File.WriteAllText(path, json);
// Read (decrypts + integrity check)
try
{
string loaded = OZeroSV_File.ReadAllText(path);
saveData = JsonUtility.FromJson<SaveData>(loaded);
}
catch (System.IO.InvalidDataException)
{
// File was tampered — handle accordingly
Debug.LogError("Save file integrity check failed.");
}
OZeroBuildIntegrityValidator OZeroSDK.Security
运行时验证程序可处理构建篡改、调试器/计时异常、平台本机完整性检查、可选的 Pro Server 证明和 OZero 托管验证。当 OZeroSecurityConfig 中启用构建完整性时,由 OZeroBootstrapper 自动创建。
检查项目
| 测试 | 解释 |
|---|---|
| Assembly / Manifest | 验证从支持的构建目标生成的完整性清单和托管程序集状态。 |
| Debugger / Timing | 检测附加的调试器、异常定时间隔、断点附近的延迟,并抑制常见的焦点丢失误报。 |
| Platform Native | 激活后,它会执行特定于平台的检查,例如 Android 包/签名、iOS 越狱和桌面运行时状态。 |
| Pro Attestation | 如果Pro Server认证开启,本地检查通过后会请求服务器颁发的认证令牌。如果启用托管验证,OZero 委托裁决也会使用相同的令牌进行验证。 |
公共财产
| 姓名 | 类型 | 解释 |
|---|---|---|
| Instance | OZeroBuildIntegrityValidator | 当前验证器实例(如果创建了模块)。 |
| LastValidationResult | bool? | 这些是最新的本地验证结果。在第一次验证之前,它是null。 |
| IsValidating | bool | 如果验证正在运行,则为 true。 |
| IsIntegrityVerified | bool | 如果最近激活的本地检查通过,则为 true。 |
| AttestationToken | OZeroBuildAttestationToken | 这是最新的 Pro 证明令牌。在服务器证明成功或失败之前为空,并且令牌包含用于重用跟踪的唯一 ID。 |
事件和方法
当所有启用的本地检查通过时调用。
当启用的本地检查或 Pro 证明拒绝构建时调用。
当 Pro 服务器证明成功并且在 AttestationToken 中收到有效令牌时调用。
开始手动验证。对于一般项目,建议使用仪表板的启动/定期验证设置。
OZeroSpeedHackDetector OZeroSDK.Security
使用五个独立的检测信号检测速度黑客和时间操纵。仅在信号相互确认时才报告威胁,从而减少误报。
检测信号
| 信号 | 解释 |
|---|---|
| TimeScale | 监视对 Unity 的 Time.timeScale 的未经授权的更改 |
| API Clock | 将操作系统时间 API 与本机后台计时器进行比较 |
| Thread Drift | 测量 Unity 运行时间和独立本机计时源之间的漂移 |
| Time Backward | 检测系统时间向后移动 |
| NTP | 可选 — 与 NTP 服务器交叉检查以进行绝对时间验证(需要网络) |
检测通过带有 ModulationType.SpeedHack 或 ModulationType.TimeHack 的 OZeroSecurityManager 回调进行。设置在 OZeroSecurityConfig 中。
OZeroInjectionDetector OZeroSDK.Security
观察异常运行时模块、挂钩、调试器和信任模块策略信号。定期扫描在适用的情况下使用抖动调度来减少可预测的扫描时序。
检测目标
| Runtime module | 意外的模块或与挂钩相关的运行时信号 |
| Debugger | 调试器或跟踪器连接信号 |
| Memory map | 可疑运行时内存或模块放置的信号 |
| Illegal DLL | 未经授权的托管程序集加载到进程中(Windows/Unity 编辑器) |
检测通过带有 ModulationType.Injection 的 OZeroSecurityManager 回调进行。
OZeroSecurityConfig ScriptableObject
存储全局安全设置的 ScriptableObject 资产。当您在编辑器中编写时,构建管道会将其打包到受保护的运行时设置中以供播放器构建。实际应用程序设置通过 OZeroSecurityConfig.Instance 进行访问。
场地
这些字段分组为嵌套配置类(Response、Integrity、InstallSource、DeviceBinding、SpeedHack、Injection),并通过 OZeroSecurityConfig.Instance 中的同名属性进行访问。下面列出了经常调整的字段,请参阅资产的检查器工具提示以了解完整的详细信息。
| 场地 | 类型 | 默认 | 解释 |
|---|---|---|---|
| - 顶部 - | |||
| developerSecret | string | "" | 用于密钥派生的 OZeroSV_File 和 OZeroSafePlayerPrefs 密码的密钥派生函数。每个游戏的它必须是唯一的,并且在发布后不得更改。 |
| enableLog | bool | true | 启用 SDK 调试日志(在发布版本中始终作为 OZeroSecLog 删除)。 |
| -回复- | |||
| response.forceQuitOnDetection | bool | true | 遇到威胁时强制关闭(将 OZeroInternalFallbackReceiver 强制为本机 OZ_AbortProcess)。如果您只想处理用户回调链,请禁用。 |
| - 正直 - | |||
| integrity.useIntegrity | bool | true | 构建完整性模块主控开关。 |
| integrity.validateOnStartup | bool | true | 在时间 Start() 运行完整的完整性检查。 |
| integrity.periodicCheckInterval | float | 120 | 定期重新验证运行之间的时间间隔(以秒为单位)。将其设置为 0 或更小会禁用定期检查。 |
| integrity.checkAssemblyHash | bool | true | 针对 OZeroAssemblyManifest 编译的程序集的 SHA-256/公钥令牌验证。 |
| integrity.checkDebugger | bool | true | 附加托管调试器、Unity 调试构建标志、CPU 时序异常检测。 |
| integrity.checkPlatformNative | bool | true | 运行特定于平台的本机检查(生根、越狱、APK 签名、Authenticode 等)。 |
| integrity.failIfManifestMissing | bool | false* | 将程序集清单丢失/加载失败视为违规。在 * 开发以外的玩家构建中,无论序列化值如何,这都将被强制为 true。 |
| integrity.requireManifestSignature | bool | false* | 要求程序集清单使用有效的公钥签名进行签名。使用工具→OZero→生成清单签名密钥生成密钥。 *在发布播放器版本中强制为 true. |
| integrity.blockEmulator | bool | true | (Android) 将模拟器检测视为完整性违规。 |
| — Install Source (Android) — | |||
| installSource.useInstallSource | bool | true | Install Source验证主开关。 |
| installSource.allowGooglePlayStore | bool | true | 允许安装 Google Play(您还可以切换 Galaxy Store、Amazon Appstore、AppGallery、OneStore 等的各个商店标志)。 |
| —Device Binding— | |||
| deviceBinding.useDeviceBinding | bool | true | Device Binding验证总开关。 |
| deviceBinding.hardwareChangeTolerance | int (0–3) | 1 | 在设备被视为新设备之前允许的硬件指纹组件更改次数。 |
| —速度黑客— | |||
| speedHack.useSpeedHack | bool | true | 速度黑客检测器主开关。 |
| speedHack.checkInterval | float | 1.0 | 轮询间隔(秒,限制为 0.05–5)。 |
| speedHack.requiredDetections | int | 3 | 导致违规所需的连续可疑样本数(限制为 1-10)。 |
| speedHack.useWebTimeValidation | bool | true | 启用与外部端点的基于 HTTPS HEAD 的游戏时间交叉验证。 |
| speedHack.webTimeUrls[] | string[] | [] | M-4 安全增强 (2026-04-24). 用于循环定时交叉验证的积分器控制端点列表。至少设置两个您控制的项目。仅当此列表为空时,它才会回退到单个已弃用的 webTimeUrl 字段。 |
| speedHack.minSuccessfulEndpoints | int | 2 | webTimeUrls 中必须响应有效 Date 标头才能被视为成功的端点的最小数量。 |
| speedHack.maxConsecutiveFailures | int | 6 | onWebTimeUnavailable 升级发生之前允许的最大连续失败回合数。 |
| speedHack.onWebTimeUnavailable | enum | WarnOnly | 网络时间端点无法访问时的策略:WarnOnly(默认 — 记录并继续运行,适合离线优先的游戏)、Strict(视为敌对环境并触发 SpeedHack 回调)、Silent(无日志/升级 — 不推荐)。 |
| — 注射 — | |||
| injection.useInjection | bool | true | 注射/挂钩检测器主开关。每种构建类型的操作:release → 立即终止,development build → 仅输出警告(M-5 安全增强,2026-04-24),editor → 忽略。 |
OZeroLicenseConfig OZeroSDK.Security.License
ScriptableObject 从 Resources/OZeroLicenseConfig 加载。选择您的许可证层并设置 Plus/Pro 密钥和可选的 Pro 运行时功能。如果丢失或为空,它将作为标准/无服务器运行。
场地
| 场地 | 类型 | 解释 |
|---|---|---|
| tier | OZeroLicenseTier | 标准完全离线运行。 Plus 激活项目绑定本机变体。 Pro 包含 Plus 并启用基于服务器的运行时功能。 |
| licenseKey | string | Plus 键的格式为 OZ-PLS-...,Pro 键的格式为 OZ-PRO-...。如果为空,则它作为标准/无服务器运行。 |
| requireVariantManifestForBuild | bool | 在 Plus/Pro 构建中,如果项目绑定本机变体清单丢失或不匹配,Unity 将使构建失败。 |
| variantProjectId | string | 当下载的清单中存在项目 ID 时,用于变体预验证的可选项目标识符。 |
| serverBaseUrl | string | 用于 Pro 激活和服务器功能的基本 URL。如果 OZero 支持未指示您使用专用端点,请保留默认值。 |
| serverPublicKeyHex | string | 这是您的专业版许可证附带的公共验证密钥。用于验证来自许可证服务器的签名响应。 |
| previousServerPublicKeyHex | string | 可选的旧公钥。仅当 OZero 支持在服务器密钥转换期间指示这样做时才输入。 |
| tokenTtlSeconds | int | 是时候相信您成功的离线 Pro 权利了。过期后,专业版专用功能将被禁用,直到重新激活为止。 |
| activationTimeoutSeconds | float | 等待 Pro 激活的最长时间。如果超出,SDK 会继续以标准/无服务器模式运行。 |
| enableLog | bool | 通过 OZeroSecLog 打印许可证流诊断日志。 |
| enableDevicePolicyHeartbeat | bool | 仅限专业版。定期检查您当前的设备是否仍然允许。 |
| enableSecurityLevelCheck | bool | 仅限专业版。允许服务器验证构建是否声明了预期的安全级别。 |
| enableRemoteSpeedHackConfig | bool | 仅限专业版。允许使用服务器策略更新速度和时间黑客阈值。 |
| enableSignedServerTime | bool | 仅限专业版。如果可用,请使用签名服务器时间作为默认可信时间源。 |
| injectionWhitelistEntries | OZeroInjectionWhitelistEntry[] | 已知可信模块的可选哈希/签名白名单条目。 |
特性
从资源加载运行时设置。将 null 视为标准/无服务器。
适用于 Standard、Plus 或空白许可证密钥。仅当需要 Pro 激活时才为 False。
在 Plus 和 Pro 上正确。用于构建预验证和本机变体绑定。
OZeroLicenseRuntime OZeroSDK.Security.License
读取当前许可证状态的运行时外观。它会在应用程序启动时自动初始化,因此大多数项目只需要读取状态或调用 HasCapability 即可。
特性
| 姓名 | 类型 | 解释 |
|---|---|---|
| Entitlement | OZeroLicenseEntitlement | 当前有效的权利。在标准/无服务器模式下,它为空。 |
| HasEntitlement | bool | 如果存在当前权利,则为 true。 |
| IsServerless | bool | 如果 SDK 在没有 Pro Server 功能的情况下运行,则为 True。 |
| Initialized | bool | 在许可运行时的首次启动处理完成后为真。 |
| IsProDowngraded | bool | 如果在 Pro 激活失败或过期后 SDK 继续作为 Standard 静静地运行,则为 true。 |
| DowngradeReason | string | 这是最近一次优雅降级的诊断原因。 |
| DeviceIdProvider | Func<string> | 您可以选择更改用于激活的设备 ID。如果您的项目需要使用自己的标识符,请在初始化之前设置。 |
方法
这是一种幂等启动方法。通常由 SDK 自动调用,自定义引导可以在读取许可证状态之前等待。
返回活动权利是否具有以下功能:telemetry、signed_time、attestation_v1。这在标准/无服务器中是错误的。
许可证服务器运行时调用
Pro 功能使用 /v1 下的 HTTPS JSON 调用。大多数调用都是由 SDK 自动进行的。拥有自己的游戏服务器的团队可以直接使用 /v1/validate 验证 OZA 代币,并使用 consumeToken=true 防止 tokenId 重复用于高价值操作。没有服务器的团队可以通过托管验证设置使用 OZero 委托裁决。
| 终点 | 使用 |
|---|---|
| POST /v1/activate | 在当前设备上激活您的专业版许可证并续订您的本地权利。 |
| GET /v1/time | 启用后,提供签名的服务器时间用于速度和时间黑客验证。 |
| POST /v1/attest | 通过启用的完整性检查后,我们会颁发包含唯一令牌 ID 的 Pro 构建证明令牌。该随机数与提交的构建证据和应用程序标识信息相关联。 |
| POST /v1/validate | OZA 代币在游戏服务器上进行验证。对于排名、支付、商品支付等一次性高价值行为,可以使用 consumeToken=true 阻止重复使用同一个 tokenId。 |
| POST /v1/managed-session | 对于没有自己后端的团队,OZero 会验证 Pro OZA 代币并返回允许/警告/阻止判决和简短的托管会话。 SDK 会在托管会话过期之前尝试自动重新验证,并且会阻止重复使用具有相同 tokenId 的托管会话。 |
| POST /v1/telemetry | 如果启用了遥测功能,则发送安全事件的 Pro 遥测数据。 |
OZeroAbortCode 和事件消息
当确认发生安全违规时,SDK 会生成 OZeroSecurityEvent。活动包括ModulationType、稳定公共OZeroAbortCode、MessageKey、安全英语Message 和WillAbort。
Abort Code和消息表
| 绳索 | OZeroAbortCode | ModulationType | MessageKey | 信息 |
|---|---|---|---|---|
| 0x01 | MemoryModulation | MemoryModulation | memory_modulation | 受保护的内存值意外更改。 |
| 0x02 | Injection | Injection | injection | 检测到意外的模块、挂钩或运行时注入信号。 |
| 0x0A | BuildIntegrity | BuildIntegrity | build_integrity | 构建完整性验证失败。 |
| 0x0C | SpeedOrTimeHack | SpeedHack | speed_hack | 检测到可疑的时间尺度或执行速度变化。 |
| 0x0C | SpeedOrTimeHack | TimeHack | time_hack | 检测到系统时钟或可信时间异常。 |
| 0x0E | DeviceOrInstallPolicy | DeviceBindingModulation | device_binding | Device Binding策略拒绝了当前设备。 |
| 0x0E | DeviceOrInstallPolicy | InstallSource | install_source | 应用程序Install Source不受信任。 |
| 0x0F | PhysicsHack | PhysicsHack | physics_hack | 异常物理行为超出了配置的策略。 |
| 0x10 | EnvironmentModulation | EnvironmentModulation | environment_modulation | 检测到不受支持或不安全的运行时环境。 |
| 0x13 | SteamAntiPiracy | SteamAntiPiracy | steam_antipiracy | Steam 所有权或票证验证失败。 |
创建日志或多语言 UI 时,请使用 OZeroAbortCode 和 MessageKey 作为参考值。 Message 被组织成一个安全的表达式,以便开发人员可以了解情况,因此可以按原样显示在开发人员屏幕或 QA 日志上。
处理运行时的安全事件
如果您需要刷新分析队列、向开发人员显示警告或在 SDK 中止之前正常保存,请使用 OZeroSecurityManager.RegisterUserCallback 注册处理程序。您可以使用 evt.WillAbort 检查当前响应策略是否会终止应用程序。
using OZeroSDK.Security;
void OnEnable()
{
OZeroSecurityManager.Instance.RegisterUserCallback(OnHack);
}
void OnHack(OZeroSecurityEvent evt)
{
Debug.LogWarning(
$"OZero: {evt.Type} {evt.AbortCodeHex} {evt.MessageKey} - {evt.Message}");
if (evt.WillAbort)
{
// Last chance to flush your own analytics or save state.
}
Analytics.FlushSync();
}
Injection Detector API OZeroSDK.Security
哈希+签名者指纹白名单的编程表面。运行时使用OZeroDispatch,随游戏分发的信任项设置为OZeroLicenseConfig。
DTO — OZeroInjectionWhitelistEntry
[Serializable]
public class OZeroInjectionWhitelistEntry
{
// SHA-256 of the matched module file. Lowercase 64-char hex. Required.
public string HashHex { get; set; }
// SHA-256 of the module's signing certificate. Lowercase 64-char hex.
// Empty ("") means "match by hash only" (only mode for Android .so / Linux ELF).
public string SignerHex { get; set; }
// Module file format hint — "pe" | "macho" | "so". Defaults to "so".
public string Type { get; set; }
// Optional human-readable note (UI / audit only — never sent to native).
public string Comment { get; set; }
}
这是 Unity 在需要播种本地信任模块条目时使用的 DTO。专业客户通常在门户中管理相同的策略。
运行时 API — OZeroDispatch
// Returns true when trusted-module policy support is available.
public static bool HasInjectionV3 { get; }
// Replace trusted module entries atomically. Pass null/empty to clear.
// Returns false when the runtime support is unavailable.
public static bool RegisterInjectionWhitelistHash(OZeroInjectionWhitelistEntry[] entries);
// Trusted-module aware scan. Returns true when a relevant runtime signal is observed.
// Output fields are diagnostic context for your review and may be empty.
public static bool DetectAssemblyInjectionV3(
out bool silencedByWhitelist,
out string hashHex,
out string signerHex,
out string matchedModulePath);
所有三个方法都是静态助手。将其视为可选功能表面,首先检查可用性,并将本地信任条目保持在最低限度。
配置 — OZeroLicenseConfig
// Inspector array of OZeroInjectionWhitelistEntry — preferred surface.
public OZeroInjectionWhitelistEntry[] InjectionWhitelistEntries { get; }
public string[] InjectionWhitelistKeywords { get; }
InjectionWhitelistEntries 是信任模块策略的本地种子。仅在您自己部署或明确信任的模块中使用。