运行signtool.exe verify /a /v C:\Windows\notepad.exe
我可以看到notepad.exe的签名位于C:\Windows\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\ntexe.cat
。 signtool如何知道这个pe文件的签名存在?
我试图在python中复制这个signtool行为。一旦我有目录文件,我可以使用下面的代码获取证书信息,但我看不到Windows如何将文件链接到目录。
import win32com.client
catpath = "C:\\Windows\\system32\\CatRoot\\{F----E}\\nt5.cat"
signedCode = win32com.client.Dispatch('capicom.signedcode')
signedCode.FileName=catpath
signedCode.Verify()
certs = signedCode.Certificates
for cert in certs:
print cert.Archived
print cert.IssuerName
print cert.SerialNumber
print cert.SubjectName
print cert.Thumbprint
print cert.ValidFromDate
print cert.ValidToDate
print cert.Version
但是如何获取可执行文件所在的安全目录文件?
答案 0 :(得分:3)
免责声明:以下是基于测试的粗略猜测,因为确切的过程没有记录。
Windows扫描System32 \ CatRoot \ {F7 - EE}中的每个cat文件,将它们添加到system catalog database并按每个条目的文件哈希/标记值对它们进行粗略排序。
(由CatRoot2 \ dberr.txt显示,其中包含数据库进程的日志)
数据库是文件System32 \ CatRoot2 \ {F7 - EE} \ catdb。
在catdb内部,文件哈希后面是CatRoot \ {F7 - EE}中的cat文件名。
注意哈希不包括PE校验和&证书表条目。
哈希可以从SignTool verify / v或this获得。