无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 7591|回复: 27

[原创] 对Catroot下签名文件精简的思路和尝试

[复制链接]
发表于 2019-2-4 12:06:03 | 显示全部楼层 |阅读模式
本帖最后由 Windows_Air 于 2019-2-4 16:17 编辑

一、引言


对于PE(Portable Executable)文件,如果要校验其完整性或有效性,很容易地想到使用数字签名的办法。
signature.png
不过,数字签名也有一定的缺陷。还有其他的办法吗?既能快速判断文件的完整性,又能兼容各种文件格式,并且提高安全性?使用安全编录文件是一个不错的代替方案,安全编录数据库存储和文件的哈希值,可以通过比对文件哈希与数据库中的条目,来判断文件的完整性。
一般地,系统中的安全编录文件储存于Windows\System32\Catroot 下,根据不同的GUID分别存储在不同的文件夹中。
catrootpath.png
常见的GUID有以下几种:(具体请见WinVerifyTrustEx)
  1. {F750E6C3-38EE-11D1-85E5-00C04FC295EE} DRIVER_ACTION_VERIFY 驱动级别验证,最为常见的验证方式
  2. {127D0A1D-4EF2-11D1-8608-00C04FC295EE} NULL 未指定信任提供程序时的默认值
复制代码


这里,我们主要讨论{F750E6C3-38EE-11D1-85E5-00C04FC295EE}(在一些环境中,有可能也是唯一选项)。
进入到相应的路径中,可以看到这里标识了系统一些组件的签名文件:
core.png
同样也包含一些Windows Update更新后遗留下的一些文件:
kb.png

打开任意一个文件:
签名文件需要数字签名才能被系统接受:
catfile.png
查看目录项,可以看到存储的哈希值,在多数情况下,系统采用SHA256算法记录文件的哈希:
hash.png
在大多数情况下,不能直观地判断特定Hash对应的文件。而在有些时候,你可以在详细信息中看到一个名为Hint的条目,记录对应的文件信息。
hint.png

二、思路


在Windows Update进行更新时,会在安全编录数据库中添加新的条目,以保证更新文件的完整性。在系统启动的过程中,同样会检验一些关键组件的校验信息。删除一些条目可能有利于加快启动时系统的加载进程,然而,随意删除更可能直接导致系统无法启动。
在实际的操作过程中,你可能想要删除掉一些“多余”的条目用以制作精简系统,那么具体应该如何操作才能保证能成功启动?可以尝试通过下面的方法进行精简:
未命名文件.jpg
在精简完文件后,你需要在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing中删除相应的注册表项目,否则将导致启动过程中蓝屏。
举个例子,如果删除了Microsoft-Windows-Foundation-Group-WOW64-mincore-Package~31bf3856ad364e35~amd64~en-US~10.0.14393.0.cat文件,那么在该项中查找包含"Microsoft-Windows-Foundation-Group-WOW64-mincore-Package"的条目并删除之(可能需要留意语言区别)。
find.png

如果精简完后出现问题,检查下面项目:
  1. *Client-Drivers-Package*
  2. *Client-Drivers-drivers-Package*
  3. *Client-Wired-Network-Drivers-Package*
  4. *Common-Drivers-Package*
  5. *DriverClasses-Package*
  6. *SnippingTool-Package*
  7. Adobe-Flash*
  8. *Basic-Http*
  9. Microsoft-Windows-Foundation-Package*
  10. *CameraCaptureUI*
复制代码

能不能进一步改进?如果不同的安全编录文件中包含相同的条目,能否保留其中一个?有些非pe的文件类型是否也存储在数据库中?有待进一步发掘。

三、尝试


试着写了个能列出可删除文件列表的小工具,精简后尚未发现问题。仍在继续测试中。
try.png

感兴趣的可以尝试下:
catfile.exe (107.5 KB, 下载次数: 120)

评分

参与人数 6无忧币 +30 收起 理由
Anson4 + 5 赞一个!
xman00 + 5 很给力!
chshrm + 5 论坛需要你这样的人才!
d9o + 5 很给力!
freesoft00 + 5
sx3k + 5 很给力!

查看全部评分

发表于 2019-2-4 12:29:38 | 显示全部楼层
好高深啊。。。。抢个沙发先
回复

使用道具 举报

发表于 2019-2-4 12:52:37 来自手机 | 显示全部楼层
cat文件存储的文件信息也能读,厉害
回复

使用道具 举报

发表于 2019-2-4 17:47:03 | 显示全部楼层
还不懂,先收藏一个,以后再学习
回复

使用道具 举报

发表于 2019-2-4 18:06:00 | 显示全部楼层
本帖最后由 sx3k 于 2019-2-4 18:41 编辑

我正好需要,谢谢分享。
我用 catfile.exe精简slore的Wimbuilder2生成的PE下的Catroot下的文件。
Wimbuilder2-基于hta/vbs/js/bat的图形界面新的PE生成器
http://bbs.wuyou.net/forum.php?m ... &fromuid=678854
(出处: 无忧启动论坛)
Re:WIN10XPE - 从零开始构建的PE+Admin双登录+MTP支持首发+19H1支持
http://bbs.wuyou.net/forum.php?m ... &fromuid=678854
(出处: 无忧启动论坛)
Windows 10 x64-2019-02-04-18-36-09.png

点评

效果如何?  详情 回复 发表于 2019-2-6 11:00
其实Re:WIN10XPE 自带了精简Catroot列表。 D:\dev\wimbuilder2\Projects\WIN10XPE\00-Configures\Build\Catalog.bat 删除蓝色的部分就行了。不过为了保持兼容性,所以RS5暂时所有的文件都加了。 不知道si  详情 回复 发表于 2019-2-4 23:07
回复

使用道具 举报

发表于 2019-2-4 20:49:13 | 显示全部楼层
新年快乐 感谢分享
回复

使用道具 举报

发表于 2019-2-4 23:07:55 | 显示全部楼层
本帖最后由 slore 于 2019-2-4 23:15 编辑
sx3k 发表于 2019-2-4 18:06
我正好需要,谢谢分享。
我用 catfile.exe精简slore的Wimbuilder2生成的PE下的Catroot下的文件。
Wimbuil ...


其实Re:WIN10XPE 自带了精简Catroot列表。

D:\dev\wimbuilder2\Projects\WIN10XPE\00-Configures\Build\Catalog.bat
@echo off

if not "x%opt[build.catalog]%"=="xfull" goto :CATALOG_ADDFILES

call AddFiles %0 :end_full_files
goto :end_full_files

;[Catalog_AddFiles_Info]
; Full Catalogs: \Windows\System32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}
; Use signtool.exe to find Catalogs ex: Signtool verify /kp /v /a X:\Windows\System32\drivers\*.sys > B:\SignDrivers.txt


\Windows\System32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}
:end_full_files
goto :EOF

:CATALOG_ADDFILES
call AddFiles %0 :end_files
goto :end_files
@\Windows\System32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\
+ver >= 17763
; typo? this line make all catalog ?
\Windows\System32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}


;skip
+ver = 0

Microsoft-Windows-Client-Desktop-Required-Package*.cat
Microsoft-Windows-Client-Desktop-Required-WOW64-Package*.cat
Microsoft-Windows-Client-Features-Package*.cat
...
; For updates
Package_*

:end_files


删除蓝色的部分就行了。不过为了保持兼容性,所以RS5暂时所有的文件都加了。

不知道signtool.exe的结果和楼主的catfile.exe有什么区别。

点评

试了下,catfile还能节省1000...不清楚是不是姿势不对  详情 回复 发表于 2019-2-6 11:45
不太清楚。。。估计又造轮子了  详情 回复 发表于 2019-2-6 11:14
回复

使用道具 举报

 楼主| 发表于 2019-2-6 11:00:11 | 显示全部楼层
sx3k 发表于 2019-2-4 18:06
我正好需要,谢谢分享。
我用 catfile.exe精简slore的Wimbuilder2生成的PE下的Catroot下的文件。
Wimbuil ...

效果如何?

点评

slore的方法解决了我的问题,楼主你的工具如我的图片所示的内容是什么问题。  详情 回复 发表于 2019-2-6 11:52
回复

使用道具 举报

 楼主| 发表于 2019-2-6 11:14:49 | 显示全部楼层
slore 发表于 2019-2-4 23:07
其实Re:WIN10XPE 自带了精简Catroot列表。

D:\dev\wimbuilder2\Projects\WIN10XPE\00-Configures\Bu ...

不太清楚。。。估计又造轮子了
回复

使用道具 举报

 楼主| 发表于 2019-2-6 11:45:06 | 显示全部楼层
slore 发表于 2019-2-4 23:07
其实Re:WIN10XPE 自带了精简Catroot列表。

D:\dev\wimbuilder2\Projects\WIN10XPE\00-Configures\Bu ...

试了下,catfile还能节省1000...不清楚是不是姿势不对
回复

使用道具 举报

发表于 2019-2-6 11:52:52 | 显示全部楼层


slore的方法解决了我的问题,楼主你的工具如我的图片所示的内容是什么问题?

点评

能把CBS.log删除后再重新运行看看文件里面有什么错误吗  详情 回复 发表于 2019-2-6 17:41
回复

使用道具 举报

 楼主| 发表于 2019-2-6 17:41:17 来自手机 | 显示全部楼层
sx3k 发表于 2019-2-6 11:52
slore的方法解决了我的问题,楼主你的工具如我的图片所示的内容是什么问题?

能把CBS.log删除后再重新运行看看文件里面有什么错误吗
回复

使用道具 举报

发表于 2019-2-9 15:44:23 来自手机 | 显示全部楼层
想删除更多,前期的设想是干掉所有KB相关的(更新有关的),结果失败。再通过错误日志补充,仍然不行。暂时没有安全精简的策略。希望得到更多指导。

点评

失败?具体指?  详情 回复 发表于 2019-2-10 16:49
回复

使用道具 举报

 楼主| 发表于 2019-2-10 16:49:11 | 显示全部楼层
xman00 发表于 2019-2-9 15:44
想删除更多,前期的设想是干掉所有KB相关的(更新有关的),结果失败。再通过错误日志补充,仍然不行。暂时没 ...

失败?具体指?
回复

使用道具 举报

发表于 2019-2-10 18:36:56 来自手机 | 显示全部楼层
开机蓝屏

点评

有可能是注册表没删干净  详情 回复 发表于 2019-2-15 10:41
回复

使用道具 举报

 楼主| 发表于 2019-2-15 10:41:41 | 显示全部楼层

有可能是注册表没删干净

点评

已确定和注册表无关,注册表清理得相当干净的。  详情 回复 发表于 2019-2-18 09:39
回复

使用道具 举报

发表于 2019-2-18 09:39:10 | 显示全部楼层
Windows_Air 发表于 2019-2-15 10:41
有可能是注册表没删干净

已确定和注册表无关,注册表清理得相当干净的。
回复

使用道具 举报

发表于 2019-2-18 09:40:09 | 显示全部楼层
因为我只关心*KB*相关的cat文件,经过各种尝试,结论就是这部分动不动~有危害或隐患的

点评

那就比较神奇了,至少还是能处理掉不少的  详情 回复 发表于 2019-3-2 12:33
回复

使用道具 举报

发表于 2019-2-18 09:47:43 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

发表于 2019-2-18 09:47:58 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

发表于 2019-2-19 10:30:36 | 显示全部楼层
顶起来,期待后续进展!
回复

使用道具 举报

发表于 2019-2-27 22:40:21 | 显示全部楼层
本帖最后由 xman00 于 2019-3-4 16:00 编辑

你好,我又来了。

请提供一下如下图的实现命令,很重要呢,谢谢
截图.png
回复

使用道具 举报

 楼主| 发表于 2019-3-2 12:33:29 | 显示全部楼层
xman00 发表于 2019-2-18 09:40
因为我只关心*KB*相关的cat文件,经过各种尝试,结论就是这部分动不动~有危害或隐患的

那就比较神奇了,至少还是能处理掉不少的
回复

使用道具 举报

发表于 2019-3-18 20:10:47 | 显示全部楼层
批注 2019-03-18 200859.png

如图所示,没找到那个划线部分的文件夹。只得到了一个可以精简的文件列表

点评

不太清楚,原本是想静默删除的。。。  详情 回复 发表于 2019-4-21 00:11
回复

使用道具 举报

发表于 2019-3-19 14:36:43 | 显示全部楼层
感谢分享!
回复

使用道具 举报

 楼主| 发表于 2019-4-21 00:11:02 | 显示全部楼层
chshrm 发表于 2019-3-18 20:10
如图所示,没找到那个划线部分的文件夹。只得到了一个可以精简的文件列表

不太清楚,原本是想静默删除的。。。
回复

使用道具 举报

发表于 2020-9-1 03:24:53 来自手机 | 显示全部楼层
800700c1然后一直卡1%,提示press any key to exit,请问啥原因?

点评

可能是权限不够  详情 回复 发表于 2020-10-17 22:34
回复

使用道具 举报

 楼主| 发表于 2020-10-17 22:34:26 | 显示全部楼层
weiisusu 发表于 2020-9-1 03:24
800700c1然后一直卡1%,提示press any key to exit,请问啥原因?

可能是权限不够
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-3-29 23:06

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表