MakeCat

MakeCat 工具是用于创建目录文件的 CryptoAPI 工具。 MakeCat 作为适用于 Windows 7 和 .NET Framework 4.0 的 Microsoft Windows 软件开发工具包 (SDK) 的一部分提供,默认情况下安装在 SDK 安装路径的 \Bin 文件夹中。

MakeCat 工具使用以下命令语法:

MakeCat [-n-r-v||] FileName

参数

参数 描述
-n
不要因可恢复错误而停止。
-r
如果遇到可恢复错误,则强制 MakeCat 结束。 具体而言,在处理 .cdf 文件的目录文件部分中的条目时,它将结束。
-v
“详细”: 显示所有进度和错误消息。
FileName
要分析的 .cdf 文件的名称。 有关所需的结构和内容,请参阅备注。

 

备注

必须使用以下规范生成 .cdf 文件。

[CatalogHeader]
Name=Name              
ResultDir=ResultDir   
PublicVersion=[|1]
CatalogVersion = [|1|2]
HashAlgorithms=[|SHA1|SHA256]
PageHashes=[true|false]
EncodingType=Encodingtype 
CATATTR1={type}:{oid}:{value} (optional)
CATATTR2={type}:{oid}:{value} (optional)

[CatalogFiles]
{reference tag}=file path and name
{reference tag}ALTSIPID={guid} (optional)
{reference tag}ATTR1={type}:{oid}:{value} (optional)
{reference tag}ATTR2={type}:{oid}:{value} (optional)
<HASH>kernel32.dll=kernel32.dll
<HASH>ntdll.dll=ntdll.dll

注意

.cdf 文件中的最后一个条目必须始终在行尾有一个显式换行符。

 

[CatalogHeader] 部分定义有关整个目录文件的信息。

选项 说明
名称
目录文件的名称,包括其扩展名。
ResultDir
将放置创建的 .cat 文件的目录。 如果未指示,则使用默认的当前目录。 如果该目录不存在,则会创建它。
PublicVersion
不支持此选项。
Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 目录版本。 如果留空,则使用默认值 1。

CatalogVersion
目录版本。 如果版本不存在或设置为 1,则将“0x100”传递给 CryptCATOpen 函数的 dwPublicVersion 参数,并创建版本 1 目录文件。 HashAlgorithms 选项必须为空或包含 SHA1。
如果版本设置为 2,则会将“0x200”传递给 CryptCATOpen 函数的 dwPublicVersion 参数,并创建版本 2 目录文件。 HashAlgorithms 选项必须包含 SHA256。
如果此选项存在,但包含除 1 或 2 以外的任何值,则 MakeCat 工具将出错。
Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 不支持此选项。

HashAlgorithms
使用的哈希算法的名称。 有关详细信息,请参阅 CatalogVersion 选项。
Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 不支持此选项。

PageHashes
指定是否对 [CatalogFiles] 部分中的 <HASH> 选项中列出的文件进行哈希处理
Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 不支持此选项。

EncodingType
使用的消息编码类型。 如果留空,则默认的 EncodingType 为 PKCS_7_ASN_ENCODING |X509_ASN_ENCODING,0x00010001。

 

[CatalogFiles] 部分定义目录文件的每个成员,其中包含不同类型的文件和不同类型的属性,这些属性位于不同的组中。

选项 说明
reference 标记
对文件的文本引用。 这可以包括除等号 (=) 之外的任何 ASCII 文本字符。 安装后,系统必须能够重现此标记。
使用 <HASH> 作为文件名的前缀。 这会导致 标记成为 ASCII 字符串形式的文件的哈希。
文件路径和名称
文件名,包括要分析的扩展名和文件的相对路径。 可以使用 SignTool 签名的任何类型的文件都可以添加到目录中。 例如,可以将具有以下扩展名的文件名添加到目录中:.exe、.cab、.cat、.ocx、.dll 和 .stl。
ALTSIPID
要用于哈希的 SIP GUID,而不是基于文件类型的标准 SIP。 此项是可选的。 如果省略此项,将使用默认 SIP 对成员进行哈希处理。 如果未找到默认安装的 SIP,则将使用平面 SIP。
guid
GUID 的文本表示形式。
ATTRx
可选。 有关文件或内容的属性或语句。 可以有任意数量的属性,包括无属性。
type
定义要以文本) 格式0x00000000 (添加的属性类型。 此选项可以是以下零个或多个值的按位 组合:
  • 0x10000000经过身份验证的属性 (签名,包含在哈希) 中。
  • 0x20000000未经身份验证的属性 (无符号,不包括在哈希中,不可验证) 。
  • 0x01000000 属性不会复制到 CatalogVersion 2 目录中的 SHA1 条目。
  • 0x00010000 属性以纯文本表示。 不会执行任何转换。
  • 0x00020000 属性以 base-64 编码表示。 这用于表示二进制数据。
  • 0x00000001 属性是名称值对。 将 oid 选项用作名称。 此属性速度缓慢;因此,请谨慎使用此选项。
  • 0x00000002 属性由 对象标识符 (OID) 引用。

oid
属性的引用键的文本表示形式。 它是一个 OID,采用带点的四边形表示法 (文本字符串的形式,例如 a.b.c.d) 或文本 Name。
value
特性值的文本表示形式。 使用的文本表示形式类型取决于类型选项的值。 EOL 字符确定长度。
<散 列>
对指定的文件进行哈希处理。

 

生成的目录文件是无符号的。 如果要在传输之前对其进行签名,则使用 SignTool 对其进行签名。