4

実行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 で再現しようとしています。カタログ ファイルを取得したら、以下のコードで証明書情報を取得できますが、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

しかし、実行可能ファイルが含まれているセキュリティ カタログ ファイルを取得するにはどうすればよいでしょうか。

4

1 に答える 1

4
免責事項: 以下は、正確なプロセスが文書化されていないため、テストに基づく大まかな推測です。

Windows は System32\CatRoot\{F7--EE} 内のすべての cat ファイルをスキャンし、それらをシステム カタログ データベースに追加して、各エントリのファイル ハッシュ/タグ値で大まかに並べ替えます。
(データベース プロセスのログを含む CatRoot2\dberr.txt によって明らかになります)
データベースはファイル System32\CatRoot2\{F7--EE}\catdb です。
catdb 内では、ファイル ハッシュの後に CatRoot\{F7--EE} 内の cat ファイル名が続きます。
ハッシュが PE チェックサムと証明書テーブル エントリを除外していることに注意してください。 ハッシュは、SignTool verify /v またはthis
から取得できます。
于 2015-03-17T01:21:23.057 に答える