public sealed class HeaderConsistencyRule : IValidationRule
{
    public string RuleName => nameof(HeaderConsistencyRule);
    public ValidationSeverity Severity => ValidationSeverity.Error;

    public Task<ValidationResult> ValidateAsync(PeImageInfo peInfo, CancellationToken cancellationToken)
    {
        var ok = peInfo.DosHeader.Magic == 0x5A4D && peInfo.NtHeaders.Signature == 0x00004550;
        return Task.FromResult(new ValidationResult(RuleName, Severity, ok, ok ? "Headers are consistent." : "Invalid MZ/PE signature."));
    }
}