From f6ffd314b116d93a456bc4e05008a345455baaab Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 9 Nov 2022 21:08:33 -0800 Subject: [PATCH] Add PE attribute certificate table printing --- ExecutableTest/Program.cs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/ExecutableTest/Program.cs b/ExecutableTest/Program.cs index d5333e85..1aee61ba 100644 --- a/ExecutableTest/Program.cs +++ b/ExecutableTest/Program.cs @@ -741,7 +741,30 @@ namespace ExecutableTest Console.WriteLine(); // TODO: COFFStringTable (Only if COFFSymbolTable?) - // TODO: AttributeCertificateTable + + Console.WriteLine(" Attribute Certificate Table Information:"); + Console.WriteLine(" -------------------------"); + if (executable.OptionalHeader?.CertificateTable == null + || executable.OptionalHeader.CertificateTable.VirtualAddress == 0 + || executable.AttributeCertificateTable.Length == 0) + { + Console.WriteLine(" No attribute certificate table items"); + } + else + { + for (int i = 0; i < executable.AttributeCertificateTable.Length; i++) + { + var entry = executable.AttributeCertificateTable[i]; + Console.WriteLine($" Attribute Certificate Table Entry {i}"); + Console.WriteLine($" Length = {entry.Length}"); + Console.WriteLine($" Revision = {entry.Revision}"); + Console.WriteLine($" Certificate type = {entry.CertificateType}"); + Console.WriteLine($" Certificate = {BitConverter.ToString(entry.Certificate).Replace("-", string.Empty)}"); + // TODO: Add certificate type parsing + } + } + Console.WriteLine(); + // TODO: DelayLoadDirectoryTable Console.WriteLine(" Resource Directory Table Information:");